亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

反射——Java高級開發必須懂的

難度入門
時長 1小時20分
學習人數
綜合評分9.67
760人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
  • 方法的反射:

    1. 獲取A類中的print(int,int)方法:

      ①要獲取一個方法就是獲取類的信息,獲取類的信息首先要獲取類的類類型

      ? ? ?? A a1=new A(); ?Class c= a1.getClass();

      ②獲取方法 由名稱和參數列表來決定,getMethod獲取的是public方法,getDelcaredMethod獲取自己聲明的方法

      ?Method m =c.getMethod(methodName,paramtypes);//paramtypes可以用數組的形式 ?表示new Class[]{int.class,int.class},也可以直接列舉類類型 ?

      2.方法的反射操作:

      是用m對象來進行方法調用,和a1.print(10,20)調用的方法相同

      m.invoke(a1,new Object[]{10,20})

      Object o=m.invoke(對象名,參數);//方法如果沒有返回值返回null,如果有返回值返回具體值,參數可用數組的方式表示,也可以直接列舉,沒有參數就不寫


    查看全部
  • 方法的反射:

    1. 方法名稱加參數列表可以唯一確定一個方法


    通過反射調用方法:

    先創建這個方法所在類的實例對象(使用Class) 然后通過實例對象來訪問該類的是方法

    ?A a= new A();

    Class c=a.getclass();

    Method m = c.getMethod("print", int.class,int.class);//后面的參數為Print方法的參數列表 m.invoke(a1,10,10);


    反射機制的原理

    1:根據某個類或者某個類的實例對象,獲取她的類類型

    2:根據類類型的API來獲取對應類的屬性、方法等

    3:然后就可以操作對應的屬性和方法了,這樣就比較便利了,不具體的知道某個類的情況下,便可以操作對應的方法和屬性了

    4:明白上面的這些事情之后,重點的肯能就是對于Class Method Filed等類的API的援救了,平時的開發中使用的也比較少,但是框架中卻使用非常普遍,因為需要抽象需要變得通用。

    查看全部
  • Java反射機制——獲取成員變量&構造函數

    一、成員變量是java.lang.reflect.Field的對象

    1、Field類封裝了關于成員變量的操作

    2、Field[] fs = c.getFields()方法獲取所有public的成員變量Field[]信息

    3、c.getDeclaredFields獲取的是該類自己聲明的成員變量信息

    4、field.getType()獲得成員類型的類類型

    5、field.getName()獲得成員的名稱

    二、構造函數是java.lang.Constructor類的對象

    1、通過Class.getConstructor()獲得Constructor[]所有公有構造方法信息

    2、建議getDeclaredConstructors()獲取自己聲明的構造方法

    3、Constructor.getName():String

    4、Constructor.getParameterTypes():Class[]

    查看全部
  • 獲取方法信息:

    基本數據類型,void關鍵字都存在類類型

    class.getMethods()方法獲取是該類的所有public方法,包括從父類繼承的方法;

    class.getDeclareMethods()方法獲取該類自行聲明的所有方法,不論訪問權限;

    三、Method類提供了一些操作方法的方法

    1、.getReturnType()得到該方法的返回值類型的類類型(class),如int.class String.class

    2、.getName()得到方法的名稱

    3、.getParameterTypes()獲得參數列表類型的類類型如參數為(int,int)則得到

    Class c1 = int.class; int的類類型

    Class c2 = String.class; String類的類類型 String類字節碼

    Class c3 = double.class;double這個數據類類型的字節碼表示方式

    Class c4 = Double.class; Double這個類的類類型字節碼表示方式

    Class c5 = void.class; 表達了void這個類的類類型

    getName為這個類的類類型的具體名稱

    c1.getName ---> int

    c2.getName ---> java.lang.String 類的全稱

    c2.getSimpleName ---> String 不包含包名的類的名稱

    查看全部
  • 方法的反射
    查看全部
  • Field
    查看全部
  • 動態加載類
    查看全部
  • 類也是對象,是java.lang.Class的實例對象。 即有一個類是Class,她的實例是每一個對象所屬的類。
    查看全部
    0 采集 收起 來源:Class類的使用

    2018-03-14

  • 反射操作可以繞過編輯,解決集合的泛型相關問題。但是遍歷的時候不能用for();
    查看全部
  • 通過反射可以繞過編譯,解除某些編譯限制,比如泛型
    查看全部
  • 通過反射執行一個類的方法: 1.獲取類的類類型 Class c=a.getClass() 2.通過類類型的的getMethod(name,param)方法獲取類的對應成員方法 Method m=c.getMethod(..,..) 3.通過invoke方法執行類的成員方法 Object obj=m.invoke(a,...) 注:若成員方法返回值為void,則obj為null
    查看全部
  • Field類封裝類的成員變量信息 Constructor類封裝類的構造方法信息
    查看全部
  • 獲取方法信息: 基本數據類型,void關鍵字都存在類類型 class.getMethods()方法獲取是該類的所有public方法,包括從父類繼承的方法; class.getDeclareMethods()方法獲取該類自行聲明的所有方法,不論訪問權限; method.getName()獲取方法名 method.getReturnType()獲取方法的返回值 method.getParameterTypes(),獲取方法的參數類型的類類型數組class[] 三獲取方法信息: 一、基本的數據類型,void關鍵字等都存在類類型 Class c = 基類.class (int,String,double,void等) 二、Class類的基本API操作的 1、c.getName()可以獲取類的名稱 2、c.getSimpleName();//不包含包名的類的名稱 3、c.getMethods()獲取類的【public方法】集合,【包括繼承來的】 ***注意【所有方法都是Method類的對象】 4、c.getDeclaredMethods()獲取的是所有該類【自己聲明】的方法,【不問訪問權限】 三、Method類提供了一些操作方法的方法 1、.getReturnType()得到該方法的返回值類型的類類型(class),如int.class String.class 2、.getName()得到方法的名稱 3、.getParameterTypes()獲得參數列表類型的類類型,如參數為(int,int)則得到 Class c1 = int.class; int的類類型 Class c2 = String.class; String類的類類型 String類字節碼 Class c3 = double.class; double這個數據類類型的字節碼表示方式 Class c4 = Double.class; Double這個類的類類型字節碼表示方式 Class c5 = void.class; 表達了void這個類的類類型 getName為這個類的類類型的具體名稱 c1.getName ---> int c2.getName ---> java.lang.String 類的全稱 c2.getSimpleName ---> String 不包含包名的類的名稱
    查看全部
  • Class.forName()用于動態加載類(即運行時加載) 靜態加載類:編譯時程序中涉及到的類將全部被加載,若某類未聲明編譯將無法通過
    查看全部
  • 萬事萬物皆對象,任何一個類都是Class的實例對象,這個實例對象有三種表示方式。 Foo foo1 = new Foo(); 第一種:Class c1 = Foo.class(); 第二種:Class c2 = foo1.getClass(); 第三種:Class c3 = null;c3 = Class.forName("Foo類的全稱");
    查看全部
    1 采集 收起 來源:Class類的使用

    2018-03-22

舉報

0/150
提交
取消
課程須知
童鞋們,學習本課程前需要熟悉Java面向對象的思想,并能掌握Java IO輸入輸出流、集合和泛型等知識??蓞⒖寄秸n網Java入門的一、二、三季以及我的文件我做主——Java IO流課程。
老師告訴你能學到什么?
1、能夠理解并應用反射機制。 2、能夠了解反射機制在集合泛型中的應用。 3、有利于更好的學習框架等Java高級技術。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!