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

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

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

難度入門
時長 1小時20分
學習人數
綜合評分9.67
760人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
  • 方法的反射 如何獲取某個方法: 方法的名稱和方法的參數列表才能唯一決定某個方法 方法反射的操作: method.invoke(對象,參數列表) 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.反射的操作都是編譯之后的操作。
    查看全部
  • 獲取成員變量&構造函數 一、成員變量是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()獲取構造方法名稱 4、Constructor.getParameterTypes()獲取構造方法參數
    查看全部
  • 1.獲取方法對象。getMethehod();getDelcareMethod(); 2 ...代表可變參數。 3.方法的反射操作 3.1 c.invoke(操作對象,傳的參數);
    查看全部
  • File類封裝了關于成員變量的操作 1.getFiields() //獲取的是所有的public成員變量信息。 2.getDeclaredFields() //獲取的是該類自己聲明的成員變量信息。 ------- Constructor 中封存了構造函數的信息
    查看全部
  • Class類的基本API操作 1、c.getName();//獲取類的名稱 2、c.getSimpleName();//不包含包名的類的名稱 3、c.getMethods();//獲取類的【所有方法】集合,【所有方法都是Method類的對象】得到的是一個數組 4、c.getReturnType()//方法返回值類型。 4、c.getDeclaredMethods();//獲取的是所有該類【自己聲明】的方法,【不問訪問權限】
    查看全部
  • 一、基本的數據類型,void關鍵字等都存在類類型 Class c = 基類.class (int,String,double,void等) 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類的基本API操作 1、c.getName();//獲取類的名稱 2、c.getSimpleName();//不包含包名的類的名稱 3、c.getMethods();//獲取類的【所有方法】集合,【所有方法都是Method類的對象】 4、c.getDeclaredMethods();//獲取的是所有該類【自己聲明】的方法,【不問訪問權限】 三、Method類API操作 1、.getReturnType();//得到該方法的返回值類型的類類型(class),如int.class String.class 2、.getName();//得到方法的名稱 3、.getParameterTypes();//獲得參數列表類型的類類型,如參數為(int,int)則得到(int.class ,int class)
    查看全部
  • class.forName() new instance() new class
    查看全部
  • 1、靜態加載類,是編譯時刻加載;動態加載類,是運行時刻加載 2、new創建對象是靜態加載類,在編譯時刻就需要加載所有的【可能使用到的類】。有一個類有問題(如不存在),都不能通過編譯,會報錯。 3、Class.forName()通過動態加載類,需要用到一個類時,才進行加載。 【功能性的類盡量使用動態加載,并對新添的類實現功能性接口(標準),這樣就不用重新編譯】
    查看全部
  • 1、任何一個類都是java.lang.class的實例化對象,稱為該類的類類型 1)表示方式 foo foo1=new foo(); A、class c1=foo.class;//任何一個類都有隱含的靜態成員變量class B、class c2=foo1.getClass();//可以通過對象的getClass方法獲得實例化 C、Class c3=null; c3=Class.forName("com.imooc.reflect.Foo"); class foo{}; 注:c1=c2 則一個類只可能是class類的一個實例對象 2、創建類類型的實例化對象 Foo foo=(foo)c1.newInstance();
    查看全部
    0 采集 收起 來源:Class類的使用

    2018-03-22

  • 反射
    查看全部
    0 采集 收起 來源:Class類的使用

    2016-10-20

  • //Foo類實例化對象. Foo foo1=new Foo(); Class類的表示方式(三種): //1.任何一個類都有一個隱含的靜態成員變量class Class c1=Foo.class; //2.通過對象的getClass()方法獲取 Class c2=foo1.getClass(); //3.直接通過類名(全稱)獲取 Class c3=Class.forName("com.imooc.Foo");//會聲明異常 c1==c2==c3,它們是同一個對象.不管c1還是c2還是c3,都代表了Foo類的類類型,即一個類只有一個Class類實例對象 //我們可以通過類的類類型(即類的class對象)創建該類的實例對象.即可通過c1、c2、c3創建Foo的實例對象 Foo foo2=(Foo)c1.newInstance();//需要強制轉換,創建出來的是Foo類的實例對象 newInstance()方法會調用要創建的對象所對應的類的無參構造方法,所以類(Foo類)中必須要有無參的構造方法
    查看全部
    0 采集 收起 來源:Class類的使用

    2018-03-22

  • 動態加載類
    查看全部
  • 類是對象3
    查看全部
    0 采集 收起 來源:Class類的使用

    2016-10-19

  • 類是對象2
    查看全部
    0 采集 收起 來源:Class類的使用

    2016-10-19

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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