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

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

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

難度入門
時長 1小時20分
學習人數
綜合評分9.67
760人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
  • 2017/03/20 方法的反射—2 class A{ public void print(){ System.out.println("helloworld"); } public void print(int a,int b){ System.out.println(a+b); } public void print(String a,String b){ System.out.println(a.toUpperCase()+","+b.toLowerCase()); } }
    查看全部
  • 2017/03/20 方法的反射—1 1)如何獲取某個方法:名稱和參數列表才能唯一決定某個方法 2)方法反射的操作:method.invoke(對象,參數列表) //要獲取print(int ,int )方法 1.要獲取一個方法就是獲取類的信息,獲取類的信息首先要獲取類的類類型 A a1 = new A(); Class c = a1.getClass(); /* 2.獲取方法 名稱和參數列表來決定 * getMethod獲取的是public的方法 * getDelcaredMethod自己聲明的方法*/ try { //Method m = c.getMethod("print", new Class[]{int.class,int.class}); Method m = c.getMethod("print", int.class,int.class); //方法的反射操作 //a1.print(10, 20);方法的反射操作是用m對象來進行方法調用 和a1.print調用的效果完全相同 //方法如果沒有返回值返回null,有返回值返回具體的返回值 //Object o = m.invoke(a1,new Object[]{10,20}); Object o = m.invoke(a1, 10,20); System.out.println("="); //獲取方法print(String,String) Method m1 = c.getMethod("print",String.class,String.class); //用方法進行反射操作 //a1.print("hello", "WORLD"); o = m1.invoke(a1, "hello","WORLD"); System.out.println("==="); //Method m2 = c.getMethod("print", new Class[]{}); Method m2 = c.getMethod("print"); //m2.invoke(a1, new Object[]{}); m2.invoke(a1); } catch (Exception e)
    查看全部
  • 編譯時刻加載時靜態加載類,運行時刻加載時動態類
    查看全部
  • class類的使用 方法的反射 成員變量的反射 構造函數的反射 Java類加載機制
    查看全部
    0 采集 收起 來源:Class類的使用

    2017-03-19

  • Class c1=Foo.class; Class c2=foo1.getClass();
    查看全部
    0 采集 收起 來源:Class類的使用

    2017-03-19

  • Class c1=Foo.class
    查看全部
    0 采集 收起 來源:Class類的使用

    2017-03-19

  • 反射操作是繞過編譯(即運行時執行)時執行
    查看全部
  • java集合泛型是為了防止輸入錯誤,只在編譯階段有效,其他情況無效
    查看全部
  • 方法的反射: 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,如果有返回值返回具體值,參數可用數組的方式表示,也可以直接列舉,沒有參數就不寫 public Class A{ public void print(){}; public void Print(Sting a,String b){} public void Print(int a,int b){}; } public Class B{ public static void main(String[] args){ A a1 = new A(); Class c= a1.getclass; Method getMet=c.getMethod("print",String.class,String.class);//忘了加引號 Object obj=getMet.invoke(a1,"df","df"); } }
    查看全部
  • 動態加載class:功能性的類盡量使用動態加載(dynamic load),而不是靜態加載(static load)。 Class.forName("類的全稱"); ·a.表示類的class type,b.代表動態加載類 ·請大家分清編譯,運行 ·編譯時刻加載類是靜態加載類(new constructor) 運行時刻加載類是動態加載類 new 創建對象 是靜態加載類,在編譯時刻就需要加載所有的可能使用到的類(100個功能,一個加載不成功,程序就編譯不通過) 通過動態加載就可以解決該問題 try{ //動態加載類,在運行時刻加載 Class c =Class.forName("ClassName1") //通過class type,創建該類對象 ClassName1 cn = (ClassName1)c.newInstance(); }
    查看全部
  • 動態加載類,一般來說功能性的類,采用動態加載類。
    查看全部
  • 反射操作繞過編譯
    查看全部
  • 編譯時刻靜態加載,運行時刻動態加載
    查看全部
  • java反射機制 1 Class類反射 1.1 Class類 1)在在面向對象的世界里,萬事皆對象 java語言中,類是對象,類是java.lang.Class類的實例對象 2)類的實例的表示方式 第一種方式 Class c1 = Obj.Class; 第二種方式 Class c2 = obj.getClass(); 第三種方式 Class c3 = new Class.forName("包名+類名");
    查看全部
    0 采集 收起 來源:Class類的使用

    2018-03-22

  • 每一個類是Class類的實例對象(java.lang.Class) 類也是實例對象,是java.lang.Class類的實例對象,可以用三種方式表示: 1、Class c1=類.class; 2、Class c2=類的實例對象.getClass(); 3、Class c3=null; c3=Class.forName("類所屬的包.類名"); 第三種方法需要先實例化一個變量,然后通過Class.forName("")賦值,但需try,catch處理, c1和c2、c3都代表了類的類類型,一個類只可能是Class類的一個實例對象。 我們稱類這個實例對象是這個類的類類型。 可以通過類的類類型創建該類的實例對象,該實例對象需要需無參構造方法。 例:Foo(類) foo(類的實例對象)=(Foo需強制轉換類型,一般為接口,便于轉換)c1.newInstance();
    查看全部
    0 采集 收起 來源:Class類的使用

    2018-03-22

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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