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

首頁 > 學院 > 開發設計 > 正文

你需要理解的 Java 反射機制知識總結

2019-11-14 09:22:11
字體:
來源:轉載
供稿:網友

學習java的同學注意了?。。?nbsp;學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:183993990  我們一起學Java!

反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制?!?a href="http://www.49028c.com/tools/zaixianfanyi.asp">翻譯于 官方文檔】

本篇將從以下幾個方面講述反射的知識:

class 的使用方法的反射構造函數的反射成員變量的反射

一、什么是class類

在面向對象的世界里,萬物皆對象。類是對象,類是java.lang.Class類的實例對象。另外class類只有java虛擬機才能new出來。任何一個類都是Class 類的實例對象。這實例對象有三種表達方式:

public class User{}public class ClassTest{User u=new User(); //方式1: Class c1=User.class;//方式2:Class c2=u.getClass();//方式3:Class c3=Class.forName("com.forezp.User");//可以通過類的類型創建該類的實例對象User user=(User)c1.newInstance();}

二、class類的動態加載

Class.forName(類的全稱);該方法不僅表示了類的類型,還代表了動態加載類。編譯時刻加載類是靜態加載、運行時刻加載類是動態加載類。

三、獲取方法信息

基本的數據類型,void關鍵字都Class 類的實例;可以通過getame();getSimpleName()獲取類的名稱。

Class c1=String.class;Class c2=int.class;Class c3=void.class;System.out.PRintln(c1.getName());System.out.println(c2.getSimpleName());

獲取類的所有方法,并打印出來:

public static void printClassInfo(Object object){        Class c=object.getClass();        System.out.println("類的名稱:"+c.getName());        /**         * 一個成員方法就是一個method對象         * getMethod()所有的 public方法,包括父類繼承的 public         * getDeclaredMethods()獲取該類所有的方法,包括private ,但不包括繼承的方法。         */        Method[] methods=c.getMethods();//獲取方法        //獲取所以的方法,包括private ,c.getDeclaredMethods();        for(int i=0;i<methods.length;i++){            //得到方法的返回類型            Class returnType=methods[i].getReturnType();            System.out.print(returnType.getName());            //得到方法名:            System.out.print(methods[i].getName()+"(");            Class[] parameterTypes=methods[i].getParameterTypes();            for(Class class1:parameterTypes){                System.out.print(class1.getName()+",");            }            System.out.println(")");        }    }
public class ReflectTest {        public static void main(String[] args){                String s="ss";                ClassUtil.printClassInfo(s);        }}

運行:

類的名稱:java.lang.String

booleanequals(java.lang.Object,)

java.lang.StringtoString()

inthashCode()

四、獲取成員變量的信息

也可以獲取類的成員變量信息

 public static void printFiledInfo(Object o){        Class c=o.getClass();        /**         * getFileds()獲取public         * getDeclaredFields()獲取所有         */        Field[] fileds=c.getDeclaredFields();        for(Field f:fileds){            //獲取成員變量的類型            Class filedType=f.getType();            System.out.println(filedType.getName()+" "+f.getName());        }    }
public static void main(String[] args){                String s="ss";                //ClassUtil.printClassInfo(s);                ClassUtil.printFiledInfo(s);        }

運行:

[C valueint hashlong serialVersionUID[Ljava.io.ObjectStreamField; serialPersistentFieldsjava.util.Comparator CASE_INSENSITIVE_ORDERint HASHING_SEEDint hash32

五、獲取構造函數的信息

public static void printConstructInfo(Object o){        Class c=o.getClass();        Constructor[] constructors=c.getDeclaredConstructors();        for (Constructor con:constructors){            System.out.print(con.getName()+”(“);            Class[] typeParas=con.getParameterTypes();            for (Class class1:typeParas){                System.out.print(class1.getName()+” ,”);            }            System.out.println(“)”);        }    }
 public static void main(String[] args){                String s="ss";                //ClassUtil.printClassInfo(s);                //ClassUtil.printFiledInfo(s);                ClassUtil.printConstructInfo(s);        }

運行:

java.lang.String([B ,)java.lang.String([B ,int ,int ,)java.lang.String([B ,java.nio.charset.Charset ,)java.lang.String([B ,java.lang.String ,)java.lang.String([B ,int ,int ,java.nio.charset.Charset ,)java.lang.String(int ,int ,[C ,)java.lang.String([C ,boolean ,)java.lang.String(java.lang.StringBuilder ,)java.lang.String(java.lang.StringBuffer ,)

...

六、方法反射的操作

獲取一個方法:需要獲取方法的名稱和方法的參數才能決定一個方法。

方法的反射操作:

method.invoke(對象,參數列表);

舉個例子:

class A{    public void add(int a,int b){        System.out.print(a+b);    }    public void toUpper(String a){        System.out.print(a.toUpperCase());    }}
public static void main(String[] args) {        A a=new A();        Class c=a.getClass();        try {            Method method=c.getMethod("add",new Class[]{int.class,int.class});            //也可以 Method method=c.getMethod("add",int.class,int.class);            //方法的反射操作            method.invoke(a,10,10);        }catch (Exception e){            e.printStackTrace();        }    }

運行:

20

本篇文章已經講解了java反射的基本用法, 它可以在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。

學習Java的同學注意了?。。?nbsp;學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:183993990  我們一起學Java!


上一篇:POJ 1789 Truck History

下一篇:牛式

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91成人在线播放| 日韩av一区在线观看| 国产精品视频午夜| 亚洲电影成人av99爱色| 久久久精品一区二区三区| 成人国产精品日本在线| 欧美性猛交丰臀xxxxx网站| 国产欧美日韩91| 久久久久久久激情视频| 亚洲第一中文字幕| 日韩国产激情在线| 日韩欧美一区二区三区久久| 一区二区三区四区在线观看视频| 精品网站999www| 亚洲欧美另类自拍| 日韩有码视频在线| 国产91亚洲精品| 国产精品久久av| 欧美电影在线免费观看网站| 日韩美女免费线视频| 国产精品久久久久久久久久小说| 亲子乱一区二区三区电影| 精品成人久久av| 亚洲男人av电影| 亚洲综合日韩中文字幕v在线| 亚洲91精品在线观看| 久久久精品一区| 国产精品免费久久久久影院| 粉嫩av一区二区三区免费野| 日韩在线国产精品| 国产婷婷色综合av蜜臀av| 国产精品免费久久久| 一区二区欧美日韩视频| 91国内免费在线视频| 欧美激情久久久久久| 成人黄色av播放免费| 欧美一级高清免费播放| 在线观看不卡av| 色一情一乱一区二区| 国产亚洲精品久久久久久牛牛| 色yeye香蕉凹凸一区二区av| 国产成人啪精品视频免费网| www.日韩免费| 日本精品久久电影| 欧美日韩一区免费| 色噜噜久久综合伊人一本| 亚洲自拍偷拍一区| 亚洲娇小xxxx欧美娇小| 国产精品午夜一区二区欲梦| 九九久久国产精品| 77777亚洲午夜久久多人| 在线视频亚洲欧美| 中文字幕久久精品| 久久av红桃一区二区小说| 日韩在线激情视频| 亚洲成人黄色网| 97热在线精品视频在线观看| 久99久在线视频| 国产精品一二三在线| 日韩欧中文字幕| 久久久亚洲影院| 91免费看片网站| 日本久久中文字幕| 久久av在线播放| 亚洲国产精品99久久| 992tv成人免费视频| 精品成人国产在线观看男人呻吟| 欧美国产日韩在线| 亚洲国产精品久久久久秋霞不卡| 欧美激情视频在线观看| 欧美性生活大片免费观看网址| 欧美做受高潮电影o| 国产精品亚洲第一区| 亚洲国产成人精品久久久国产成人一区| 亚洲社区在线观看| 黑人精品xxx一区一二区| 国产精品视频久| 国产精品一区二区性色av| 97超碰色婷婷| 欧美日韩国产丝袜另类| 亚洲精品一区中文字幕乱码| 日本一区二区在线免费播放| 日韩欧美成人区| 国产精品美女无圣光视频| 亚洲一区二区中文字幕| 91在线精品视频| 亚洲级视频在线观看免费1级| 亚洲欧美国产高清va在线播| 久久久欧美精品| 国产一区二区三区四区福利| 97成人在线视频| 亚洲色图第三页| 国产亚洲福利一区| 欧美片一区二区三区| 国产精品成人观看视频国产奇米| 成人欧美在线观看| 亚洲字幕一区二区| 国产精品影片在线观看| 欧美国产日韩一区二区三区| 影音先锋欧美在线资源| 97碰碰碰免费色视频| 国模精品视频一区二区三区| 国产成人啪精品视频免费网| 亚洲日本中文字幕免费在线不卡| 国产精品三级网站| 中文字幕日韩在线观看| 精品国偷自产在线| 亚洲国产精品成人精品| 日韩av色在线| 久久乐国产精品| 亚洲成人网av| 北条麻妃一区二区在线观看| 欧美成人精品在线观看| 亚洲电影天堂av| 最近中文字幕mv在线一区二区三区四区| 精品亚洲一区二区三区四区五区| 狠狠躁夜夜躁人人爽超碰91| 精品久久久av| 亚洲一区国产精品| 国产精品视频精品视频| 国产精品福利小视频| 亚洲成人性视频| 久久久国产精彩视频美女艺术照福利| 丝袜美腿亚洲一区二区| 国产精品久久久久91| 欧美综合一区第一页| 欧美日韩在线免费观看| 欧美亚洲一区在线| 最好看的2019的中文字幕视频| 91精品国产网站| 日韩电影第一页| 国产精品免费久久久| 国产精品美乳一区二区免费| 日韩在线欧美在线| 中文字幕久久久| 精品国产91久久久| 亚洲乱亚洲乱妇无码| 国产精品国产三级国产aⅴ9色| 国产69精品久久久| 国产日韩综合一区二区性色av| 亚洲欧美国产制服动漫| 国产精品久久久久久久久久久久久| 欧美中文在线视频| 国产精品丝袜高跟| 久久精品99久久香蕉国产色戒| 亚洲精品久久7777777| 欧美激情国内偷拍| 亚洲直播在线一区| 在线精品高清中文字幕| 久久久久久国产三级电影| 亚洲一二在线观看| 中文字幕av日韩| 国产精品视频专区| 亚洲欧洲黄色网| 亚洲图片制服诱惑| 色偷偷9999www| 97久久超碰福利国产精品…| 成人中文字幕+乱码+中文字幕| 亚洲精品久久久久| 亚洲男人7777| 国产亚洲精品高潮| 国产精品海角社区在线观看| 亚洲v日韩v综合v精品v| 97国产精品视频人人做人人爱|