亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java 反射獲取類詳細信息的常用方法總結

2019-11-26 16:13:55
字體:
來源:轉載
供稿:網友

類ReflectionDemo

復制代碼 代碼如下:

package Reflection;

@Deprecated
public class ReflectionDemo {
    private String pri_field;
    public String pub_field;
    public ReflectionDemo(){}
    public ReflectionDemo(String name){}
    private ReflectionDemo(String name,int int1){}
    public void ReflectMethod(){}
    public void ReflectMethod(String str){}
    private void ReflectMethod(int int1){}
    class innerclss_Relfection{} 

}


測試類ReflectionDemoTest


復制代碼 代碼如下:

package Reflection;

import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflectionDemoTest {
    public static void main(String[] args) {
        //創建類對象,使用泛型修飾避免強轉
        Class cla=ReflectionDemo.class;
        //獲取全部公共域的方法
        Field[] field=cla.getFields();
        for(Field f:field){
            System.out.println("獲取全部公共域的方法:"+f.toString());
        }
        //獲取指定的某公共域的方法
        try {
            Field field1=cla.getField("pub_field");
            System.out.println("獲取指定的公共域的方法:"+field1.toString());
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //獲取全部域的方法(含私有域),Declare
        Field[] field2=cla.getDeclaredFields();
        for(Field f:field2){
            System.out.println("獲取全部域的方法(含私有域):"+f.toString());
        }
        //獲取指定域的方法(含私有域)
        try {
            Field field3=cla.getDeclaredField("pri_field");
            System.out.println("獲取指定域的方法(含私有域):"+field3.toString());
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //獲取全部公共方法的方法(含父類)
        Method[] method=cla.getMethods();
        for(Method m:method){
            System.out.println("獲取全部公共方法的方法:"+m.toString());
        }
        try {
            //獲取指定無參方法
            //第二個參數表示參數類型,參數NUll表示無參數方法
            Method method1=cla.getMethod("ReflectMethod", null);
            System.out.println("獲取無參公共方法的方法:"+method1.toString());
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //獲取該類全部方法的方法(不含父類)
        Method[] method2=cla.getDeclaredMethods();
        for(Method m:method2){
            System.out.println("獲取全部方法的方法(含父類):"+m.toString());
        }

        //獲取該類指定方法的方法(不含父類)
        //第一個參數為方法名,第二個參數為方法返回類型,NULL則為無參方法
        try {
            Method method3=cla.getDeclaredMethod("ReflectMethod",int.class);
            System.out.println("獲取該類指定方法的方法(不含父類):"+method3);
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //獲取公有構造方法
        //獲取無參公有構造方法
        try {
            Constructor cs=cla.getConstructor(null);
            System.out.println("獲取無參構造方法:"+cs);
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //獲取有參公有構造方法
        //如多個參數的構造方法,則構造方法為多個,注意順序
        try {
            Constructor cs=cla.getConstructor(String.class);
            System.out.println("獲取有參構造方法:"+cs);
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //獲取全部構造方法

        try {
            Constructor[] cs=cla.getDeclaredConstructors();
            for(Constructor c:cs){
            System.out.println("獲取全部構造方法:"+c);
            }
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();   

    }
        //獲取包名
        Package pack=cla.getPackage();
        System.out.println("獲取當前包的名稱:"+pack);

        //獲取注釋
        Annotation[] ann=cla.getAnnotations();
        for(Annotation an:ann){
            System.out.println(an.toString());
        }   

//獲取父類
  Class supercla=cla.getSuperclass();
  System.out.println(supercla);
  //獲取內部類
  Class[] innercla=cla.getDeclaredClasses();
  for(Class cl:innercla){
   System.out.println(cl);

  }


}
}   


總結:獲取Class對象的信息方式的步驟:

1.創建Class對象 方法1 Class cla=Class.forName(“PATH”)方法2 CLass cla=實例.getclass(); 方法3 Class cla=類.class

2.使用Field(域),Method(方法),Constructor(構造方法),Package(包),Annotation(注釋),通過調用cla.getXXXX方法來獲取相關信息

3.獲取父類以及內部類的方式略有不同

4.當使用cla.getMethods的時候調用的是該類以及該父類的全部公有方法

5.當使用Declared調用的是該類的全部方法包含私有方法,在域,構造方法中同樣適用

6.當反射類無公有構造方法時無法直接使用newInstance方法,則使用

         Method cs=cla.getMethod("getInstance",null);//獲取方法
         Calendar calendar=(Calendar) cs.invoke(cla, null);//執行獲取的方法,參數1為執行方法的對象,參數2表示該方法的參數
         Date df=calendar.getTime();
         System.out.println(df.toString());

來獲取。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲韩国日本中文字幕| 日韩美女在线观看一区| 国产精品青草久久久久福利99| 亚洲国产美女精品久久久久∴| 久久精品成人欧美大片古装| 91成品人片a无限观看| 中文字幕成人精品久久不卡| 国模gogo一区二区大胆私拍| 亚洲电影中文字幕| 成人女保姆的销魂服务| 亚洲在线视频观看| 亚洲国内高清视频| 日韩美女视频免费在线观看| 国产99久久久欧美黑人| 国产精品福利在线观看| 色婷婷av一区二区三区在线观看| 久久精品2019中文字幕| 中文字幕成人精品久久不卡| 一区二区国产精品视频| 精品无码久久久久久国产| 亚洲国产美女精品久久久久∴| 91香蕉电影院| 亚洲一区二区三区sesese| 亚洲成人久久久| 91久久精品美女高潮| 最新69国产成人精品视频免费| 久久97久久97精品免视看| 亚洲性xxxx| 青草青草久热精品视频在线观看| 日本精品中文字幕| 亚洲自拍偷拍一区| 九九热这里只有精品6| 国产精品高清在线| 成人av在线亚洲| 久久久人成影片一区二区三区观看| 97av在线视频免费播放| 欧美专区福利在线| 欧美国产一区二区三区| 久久777国产线看观看精品| 不卡av电影在线观看| 日本伊人精品一区二区三区介绍| 国产精品美女免费看| 91香蕉电影院| 国产91免费观看| 欧美色欧美亚洲高清在线视频| 97视频在线播放| 国产成人精品免高潮费视频| 国产精品久久久久久久久久久不卡| 亚洲有声小说3d| 国产一区二区黄| 午夜精品在线视频| 精品久久中文字幕久久av| 久久久精品国产亚洲| 欧美激情欧美狂野欧美精品| 日韩欧美在线视频免费观看| 亚洲成人网久久久| 日韩国产在线播放| 91chinesevideo永久地址| 在线观看中文字幕亚洲| 国产一区二区三区在线观看网站| 欧美色videos| 亚洲第一精品夜夜躁人人躁| 亚洲欧美另类人妖| 日韩免费av片在线观看| 久久在线免费观看视频| 揄拍成人国产精品视频| 亚洲天堂av综合网| 日韩国产激情在线| 日韩在线视频二区| 欧美激情喷水视频| 91精品美女在线| 最新日韩中文字幕| 最近中文字幕2019免费| 91热福利电影| 国产成人一区二区三区电影| 欧美成年人网站| 国产精品一区二区3区| 国产精品18久久久久久首页狼| 欧美激情视频在线观看| 亚洲女人初尝黑人巨大| 国产精品无av码在线观看| 欧美大尺度激情区在线播放| 亚洲精品456在线播放狼人| 中文字幕自拍vr一区二区三区| 黄色成人在线免费| 欧美精品手机在线| 一区二区三欧美| 九九综合九九综合| 成人在线视频网| 欧日韩不卡在线视频| 日韩欧美在线字幕| 丝袜一区二区三区| 国产剧情久久久久久| 26uuu亚洲伊人春色| 国产精品爽黄69天堂a| 美女性感视频久久久| 色妞欧美日韩在线| 国产精品免费看久久久香蕉| 夜夜嗨av色综合久久久综合网| 午夜剧场成人观在线视频免费观看| 国产不卡一区二区在线播放| 欧美高清一级大片| 亚洲色图av在线| 精品久久久久久久久中文字幕| 777午夜精品福利在线观看| 久久av中文字幕| 亚洲国产成人91精品| 国产精品美女久久久久av超清| 亚洲最大福利网| 国产精品中文字幕在线观看| 成人性生交大片免费观看嘿嘿视频| 精品国产一区久久久| 日韩欧美中文免费| 不卡中文字幕av| 亚洲黄色成人网| 国产精品久久电影观看| www国产亚洲精品久久网站| 国产黑人绿帽在线第一区| 亚洲男人天堂九九视频| 精品国产视频在线| 日韩欧美aaa| 欧美猛男性生活免费| 国产视频在线观看一区二区| 亚洲欧美日韩精品久久奇米色影视| www.亚洲天堂| 人体精品一二三区| 午夜精品久久久99热福利| 中文字幕亚洲无线码a| 久久精品国产久精国产一老狼| 亚洲另类图片色| 在线播放精品一区二区三区| 亚洲一级片在线看| 久久久久久国产精品美女| 91免费版网站入口| 日韩免费av片在线观看| 国产免费一区二区三区在线能观看| 欧美另类69精品久久久久9999| 国产69精品99久久久久久宅男| 欧美性xxxxhd| 97成人在线视频| 国产91成人video| 久久久在线免费观看| 亚洲女人天堂av| 欧美黑人性生活视频| 欧美第一淫aaasss性| 欧美成人精品不卡视频在线观看| 日韩美女视频在线观看| 欧美日韩激情小视频| 国产精品美女av| 欧美乱大交xxxxx| 亚洲人成在线观看| 色综合老司机第九色激情| 成人高清视频观看www| 精品久久久久久久久久久久久| 97在线观看免费| 国产va免费精品高清在线| 日韩中文第一页| 97在线视频观看| 九九精品在线观看| 一区二区三区国产在线观看| 成人中心免费视频| 亚洲成人999| 久久精品视频99| 在线视频精品一|