大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java通過反射查看類的信息示例

Java通過反射查看類的信息示例

更新時間:2019-08-26 13:51:50 來源:動力節點 瀏覽2419次



今天動力節點java學院小編為大家介紹Java通過反射查看類的信息,希望各位小伙伴看完此文,對你們有很大的幫助,下面各位小伙伴們就隨小編一起看看Java通過反射查看類的信息吧。


  一、 點睛


  1 、通過反射獲取Class對象


  使用Class類的forName()靜態方法。該方法需要傳入字符串參數,該字符串參數的值是某個類的全限定類名(必須添加完整包名)。


  調用某個類的class屬性來獲取該類對應的Class對象。例如Person.class將會返回Person類對應的Class對象。


  調用某個對象的getClass()方法,該方法是java.lang.Object類中的一個方法,所以所有Java對象都可以調用該方法,該方法將會返回該對象所屬類對應的Class對象。



  2、 從Class中獲取信息


  獲取構造器


  訪問Class對應的類所包含的方法


  訪問Class對應的類所包含的屬性(Field)


  訪問Class對應的類上所包含的注釋。


  訪問該Class對象對應類包含的內部類。


  訪問該Class對象對應類所在的外部類。


  訪問該Class對象所對應類所繼承的父類、所實現的接口等。



  二 、實戰


  1、 代碼


import java.util.*;


import java.lang.reflect.*;


import java.lang.annotation.*;


// 定義可重復注解


@Repeatable(Annos.class)


@interface Anno {


}


@Retention(value = RetentionPolicy.RUNTIME)


@interface Annos {


  Anno[] value();


}


// 使用4個注解修飾該類


@SuppressWarnings(value = "unchecked")


@Deprecated


// 使用重復注解修飾該類


@Anno


@Anno


public class ClassTest {


  // 為該類定義一個私有的構造器


  private ClassTest() {


  }


  // 定義一個有參數的構造器


  public ClassTest( String name ) {


    System.out.println("執行有參數的構造器");


  }


  // 定義一個無參數的info方法


  public void info() {


    System.out.println("執行無參數的info方法");


  }


  // 定義一個有參數的info方法


  public void info( String str ) {


    System.out.println("執行有參數的info方法"


        + ",其str參數值:" + str);


  }


  // 定義一個測試用的內部類


  class Inner {


  }


  public static void main( String[] args )


      throws Exception {


    Classclazz = ClassTest.class;


    // 獲取該Class對象所對應類的全部構造器


    Constructor[] ctors = clazz.getDeclaredConstructors();


    System.out.println("ClassTest的全部構造器如下:");


    for (Constructor c : ctors) {


      System.out.println(c);


    }


    // 獲取該Class對象所對應類的全部public構造器


    Constructor[] publicCtors = clazz.getConstructors();


    System.out.println("ClassTest的全部public構造器如下:");


    for (Constructor c : publicCtors) {


      System.out.println(c);


    }


    // 獲取該Class對象所對應類的全部public方法


    Method[] mtds = clazz.getMethods();


    System.out.println("ClassTest的全部public方法如下:");


    for (Method md : mtds) {


      System.out.println(md);


    }


    // 獲取該Class對象所對應類的指定方法


    System.out.println("ClassTest里帶一個字符串參數的info()方法為:"


        + clazz.getMethod("info", String.class));


    // 獲取該Class對象所對應類的上的全部注解


    Annotation[] anns = clazz.getAnnotations();


    System.out.println("ClassTest的全部Annotation如下:");


    for (Annotation an : anns) {


      System.out.println(an);


    }


    System.out.println("該Class元素上的@SuppressWarnings注解為:"


        + Arrays.toString(clazz.getAnnotationsByType(SuppressWarnings.class)));


    System.out.println("該Class元素上的@Anno注解為:"


        + Arrays.toString(clazz.getAnnotationsByType(Anno.class)));


    // 獲取該Class對象所對應類的全部內部類


    Class[] inners = clazz.getDeclaredClasses();


    System.out.println("ClassTest的全部內部類如下:");


    for (Class c : inners) {


      System.out.println(c);


    }


    // 使用Class.forName方法加載ClassTest的Inner內部類


    Class inClazz = Class.forName("ClassTest$Inner");


    // 通過getDeclaringClass()訪問該類所在的外部類


    System.out.println("inClazz對應類的外部類為:" +


        inClazz.getDeclaringClass());


    System.out.println("ClassTest的包為:" + clazz.getPackage());


    System.out.println("ClassTest的父類為:" + clazz.getSuperclass());


  }


}



2 、運行


ClassTest的全部構造器如下:


private ClassTest()


public ClassTest(java.lang.String)


ClassTest的全部public構造器如下:


public ClassTest(java.lang.String)


ClassTest的全部public方法如下:


public static void ClassTest.main(java.lang.String[]) throws java.lang.Exception


public void ClassTest.info(java.lang.String)


public void ClassTest.info()


public final void java.lang.Object.wait() throws java.lang.InterruptedException


public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException


public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException


public boolean java.lang.Object.equals(java.lang.Object)


public java.lang.String java.lang.Object.toString()


public native int java.lang.Object.hashCode()


public final native java.lang.Class java.lang.Object.getClass()


public final native void java.lang.Object.notify()


public final native void java.lang.Object.notifyAll()


ClassTest里帶一個字符串參數的info()方法為:public void ClassTest.info(java.lang.String)


ClassTest的全部Annotation如下:


@java.lang.Deprecated()


@Annos(value=[@Anno(), @Anno()])


該Class元素上的@SuppressWarnings注解為:[]


該Class元素上的@Anno注解為:[@Anno(), @Anno()]


ClassTest的全部內部類如下:


class ClassTest$Inner


inClazz對應類的外部類為:class ClassTest


ClassTest的包為:null


ClassTest的父類為:class java.lang.Object


以上就是動力節點java學院小編介紹的“Java通過反射查看類的信息示例”的內容,希望對各位小伙伴有幫助,更多java資訊內容,請繼續關注動力節點java學院官網。



提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲精品国产第一区二区多人 | 国产成人麻豆精品 | 四虎新网址 | 国产 欧美 在线 | 99热这里只有精品3 99热这里只有精品4 | 欧美爱爱小视频 | 国产99小视频 | 久久这里有精品视频任我鲁 | 欧美成人手机在线视频 | 天天干天天上 | 亚洲一级影片 | 久久人与动人物a级毛片 | 老太婆性杂交毛片 | 羞羞的视频在线观看 | 久久综合九色综合77 | 国产精品亚洲一区在线播放 | 91国在线| 免费中文字幕视频 | 亚洲精品一区二区卡 | 国产1区2区三区不卡 | 激情小视频在线播放免费 | 免费视频爱爱太爽在线观看 | 亚洲桃色视频 | 国产综合成色在线视频 | 欧美精品h在线播放 | 亚洲国产一区二区三区最新 | 久9热精品视频在线观看 | 男女性高爱麻豆 | 久久成人在线视频 | 99久久99久久久精品齐齐鬼色 | 久久国产精品99国产精 | 奇米第四色7777 | 手机看片国产欧美日韩高清 | 免费播放国产一级 | 日本一区二区三区免费看 | 亚洲欧美在线精品一区二区 | 奇米影视第四色888 奇米影视第四色首页 | 午夜性色吃奶添下面69影院 | 99久久精品国产一区二区三区 | 亚洲综合伦理一区 | 在线免费观看国产精品 |