真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中怎么通過反射查看類的信息-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)Java中怎么通過反射查看類的信息,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出固原免費(fèi)做網(wǎng)站回饋大家。

一 點(diǎn)睛

1 通過反射獲取Class對(duì)象

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

調(diào)用某個(gè)類的class屬性來獲取該類對(duì)應(yīng)的Class對(duì)象。例如Person.class將會(huì)返回Person類對(duì)應(yīng)的Class對(duì)象。

調(diào)用某個(gè)對(duì)象的getClass()方法,該方法是java.lang.Object類中的一個(gè)方法,所以所有Java對(duì)象都可以調(diào)用該方法,該方法將會(huì)返回該對(duì)象所屬類對(duì)應(yīng)的Class對(duì)象。

2 從Class中獲取信息

獲取構(gòu)造器

訪問Class對(duì)應(yīng)的類所包含的方法

訪問Class對(duì)應(yīng)的類所包含的屬性(Field)

訪問Class對(duì)應(yīng)的類上所包含的注釋。

訪問該Class對(duì)象對(duì)應(yīng)類包含的內(nèi)部類。

訪問該Class對(duì)象對(duì)應(yīng)類所在的外部類。

訪問該Class對(duì)象所對(duì)應(yīng)類所繼承的父類、所實(shí)現(xiàn)的接口等。

二 實(shí)戰(zhàn)

1 代碼

import java.util.*;import java.lang.reflect.*;import java.lang.annotation.*;// 定義可重復(fù)注解@Repeatable(Annos.class)@interface Anno {}@Retention(value = RetentionPolicy.RUNTIME)@interface Annos {  Anno[] value();}// 使用4個(gè)注解修飾該類@SuppressWarnings(value = "unchecked")@Deprecated// 使用重復(fù)注解修飾該類@Anno@Annopublic class ClassTest {  // 為該類定義一個(gè)私有的構(gòu)造器  private ClassTest() {  }  // 定義一個(gè)有參數(shù)的構(gòu)造器  public ClassTest( String name ) {    System.out.println("執(zhí)行有參數(shù)的構(gòu)造器");  }  // 定義一個(gè)無參數(shù)的info方法  public void info() {    System.out.println("執(zhí)行無參數(shù)的info方法");  }  // 定義一個(gè)有參數(shù)的info方法  public void info( String str ) {    System.out.println("執(zhí)行有參數(shù)的info方法"        + ",其str參數(shù)值:" + str);  }  // 定義一個(gè)測(cè)試用的內(nèi)部類  class Inner {  }  public static void main( String[] args )      throws Exception {    // 下面代碼可以獲取ClassTest對(duì)應(yīng)的Class    Class clazz = ClassTest.class;    // 獲取該Class對(duì)象所對(duì)應(yīng)類的全部構(gòu)造器    Constructor[] ctors = clazz.getDeclaredConstructors();    System.out.println("ClassTest的全部構(gòu)造器如下:");    for (Constructor c : ctors) {      System.out.println(c);    }    // 獲取該Class對(duì)象所對(duì)應(yīng)類的全部public構(gòu)造器    Constructor[] publicCtors = clazz.getConstructors();    System.out.println("ClassTest的全部public構(gòu)造器如下:");    for (Constructor c : publicCtors) {      System.out.println(c);    }    // 獲取該Class對(duì)象所對(duì)應(yīng)類的全部public方法    Method[] mtds = clazz.getMethods();    System.out.println("ClassTest的全部public方法如下:");    for (Method md : mtds) {      System.out.println(md);    }    // 獲取該Class對(duì)象所對(duì)應(yīng)類的指定方法    System.out.println("ClassTest里帶一個(gè)字符串參數(shù)的info()方法為:"        + clazz.getMethod("info", String.class));    // 獲取該Class對(duì)象所對(duì)應(yīng)類的上的全部注解    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對(duì)象所對(duì)應(yīng)類的全部?jī)?nèi)部類    Class[] inners = clazz.getDeclaredClasses();    System.out.println("ClassTest的全部?jī)?nèi)部類如下:");    for (Class c : inners) {      System.out.println(c);    }    // 使用Class.forName方法加載ClassTest的Inner內(nèi)部類    Class inClazz = Class.forName("ClassTest$Inner");    // 通過getDeclaringClass()訪問該類所在的外部類    System.out.println("inClazz對(duì)應(yīng)類的外部類為:" +        inClazz.getDeclaringClass());    System.out.println("ClassTest的包為:" + clazz.getPackage());    System.out.println("ClassTest的父類為:" + clazz.getSuperclass());  }}

2 運(yùn)行

ClassTest的全部構(gòu)造器如下:private ClassTest()public ClassTest(java.lang.String)ClassTest的全部public構(gòu)造器如下:public ClassTest(java.lang.String)ClassTest的全部public方法如下:public static void ClassTest.main(java.lang.String[]) throws java.lang.Exceptionpublic void ClassTest.info(java.lang.String)public void ClassTest.info()public final void java.lang.Object.wait() throws java.lang.InterruptedExceptionpublic final void java.lang.Object.wait(long,int) throws java.lang.InterruptedExceptionpublic final native void java.lang.Object.wait(long) throws java.lang.InterruptedExceptionpublic 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里帶一個(gè)字符串參數(shù)的info()方法為:public void ClassTest.info(java.lang.String)ClassTest的全部Annotation如下:@java.lang.Deprecated()@Annos(value=[@Anno(), @Anno()])該Class元素上的@SuppressWarnings注解為:[]該Class元素上的@Anno注解為:[@Anno(), @Anno()]ClassTest的全部?jī)?nèi)部類如下:class ClassTest$InnerinClazz對(duì)應(yīng)類的外部類為:class ClassTestClassTest的包為:nullClassTest的父類為:class java.lang.Object

看完上述內(nèi)容,你們對(duì)Java中怎么通過反射查看類的信息有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


分享名稱:Java中怎么通過反射查看類的信息-創(chuàng)新互聯(lián)
文章起源:http://weahome.cn/article/dijopc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部