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

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

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

難度入門
時長 1小時20分
學習人數
綜合評分9.67
760人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
  • 除了基本的數據類型、靜態成員不是對象,萬事萬物皆對象,而基本的數據類型可封裝為包裝類。 類是java.lang.class的對象 三種獲取類類型的表示方式: (1)通過隱含的靜態成員變量class Class c = Foo.class (2)通過對象實例的getClass方法 Class c = foo1.getClass() (3)通過Class中的forName方法 ,這個需要去捕獲異常 Class c = Class.forName("hello.xiaoxi.Foo") 通過類類型去創建對象實例: Foo f1 = (Foo)c.newInstance()
    查看全部
  • 添加文檔注釋:alt+shift+j
    查看全部
  • double 是基本數據類型,而Double是double的包裝類 所以 Class c3=double.class //double的類類型,(跟c1類似) Class c4=Double.class //double類的類類型(跟c2類似)
    查看全部
  • 類的加載的問題: 1.靜態加載:在我們編譯程序的時候屬于靜態加載 2.動態加載:在我們運行的時候屬于動態加載 相關的類 Class ,Method(該類可以獲取該類所有public的方法包括從父類繼承而來的) getReturnType() 得到方法的返回值類型的類類型 getName() 得到方法的名稱 getParameterTypes() 得到的是參數列表的類型的類類型
    查看全部
  • Java反射機制——通過反射了解集合泛型的本質 1:java中集合的泛型,只在編譯階段有效,用來限定輸入的,編譯之后是去泛型的。 2:反射的操作都是編譯之后的操作;就是運行階段; 3:java中集合的泛型是防止錯誤輸入的;只在編譯階段有效,只要繞過編譯就無效啦 我們可以通過方法的反射來操作,繞過編譯 eg: ArrayList list1=new ArrayList(); ArrayList<String> list2=new ArrayList<String>(); Class c1=list1.getClass(); Class c2=list2.getClass(); System.out.print(c1==c2);//true Method m=c2.getMethod("add",Object.class); m.invoke(list2,20);//向成功向list2集合中添加一個int 型的值;繞過編譯 當然是不能直接foreach list2集合的,會報類型轉換錯誤
    查看全部
  • 動態加載類<br> 定義接口<br> interface OfficeAble{<br> public void start(); <br> }<br> class Word implements OfficeAble{<br> public static void start(){<br> System.out.println("word...starts");<br> }<br> }<br> 1.Class.forName("類的全稱")不僅表示了類得類類型,還代表了動態加載類<br><br> 編譯時刻加載類是靜態加載類、運行時刻加載類是動態加載。<br><br> 2.new 創建對象是靜態加載類,在編譯時刻就需要加載所有的可能使用到的類;<br> 一個錯誤就會導致編譯失敗,通過動態加載類可以解決這個問題<br><br> <br> OfficeAble oa=(OfficeAble)c.newInstance();//在此之前應該定義個接口Interface OfficeAble,并且讓子類實現它。<br><br> <br> OfficeBetter.java只用編譯一次,每次添加新的功能后只用編譯所用的接口實現類,然后運行“java OfficeBetter 類名” 。 <br> <br> 3.在線升級用的就是動態加載類。功能性的類,要使用動態加載,而不能使用靜態加載。
    查看全部
  • 靜態加載與動態加載
    查看全部
  • 類是java.lang.class的對象
    查看全部
    0 采集 收起 來源:Class類的使用

    2016-08-09

  • 1.Class.forName("類的全稱")不僅表示了類得類類型,還代表了動態加載類<br> 編譯時刻加載類是靜態加載類、運行時刻加載類是動態加載。<br> 2.new 創建對象是靜態加載類,在編譯時刻就需要加載所有的可能使用到的類; 一個錯誤就會導致編譯失敗,通過動態加載類可以解決這個問題<br> Class c = Class.forName(args[0]);<br> 通過類類型,創建該類對象。<br> OfficeAble oa=(OfficeAble)c.newInstance();//在此之前應該定義個接口Interface OfficeAble,并且讓子類實現它。<br> oa.start();<br> 。。。。在編譯時Word.java需要重新編譯,而OfficeBetter.java不需要,每次添加新的功能的時候只用編譯使用了接口的子類,然后運行時輸入 java OfficeBetter Word,這時oa是Word類<br> 3.在線升級用的就是動態加載類。功能性的類,要使用動態加載,而不能使用靜態加載。
    查看全部
  • 1.Class類 1) 在面向對象的世界里,萬事萬物皆對象。(java語言中,靜態的成員、普通數據類型除外) 類是不是對象呢?類是(哪個類的對象呢?)誰的對象呢? 類是對象,類是java.lang.Class類的實例對象 2)這個對象到底如何表示 3 )Class.forName("類的全稱") 不僅表示了,類的類類型,還代表了動態加載類 請大家區分編譯、運行 編譯時刻加載類是靜態加載類、運行時刻加載類是動態加載類 4)基本的數據類型 void關鍵字 都存在類類型 5)Class類的基本API操作 2.方法的反射 1)如何獲取某個方法 方法的名稱和方法的參數列表才能唯一決定某個方法 2)方法反射的操作 method.invoke(對象,參數列表) 3)為什么要用方法的反射 why?指定方法名稱調用方法 舉個實際應用的案例 ---->通過標準JavaBean的屬性名獲取其屬性值 BeanUtil類 4)通過Class,Method來認識泛型的本質
    查看全部
    0 采集 收起 來源:Class類的使用

    2018-03-22

  • 驗證:我們可以通過方法的反射來操作,繞過編譯 Method m = c2.getMethod("add",object.class); m.invoke(list1,12);//我靠還真繞過編譯,泛型了 //這貨我清楚了
    查看全部
  • 通過getClass獲取類對象,再getMethod獲取方法, m.invoke(a1,new object[](10,20));//方法反射
    查看全部
  • 獲取兩個相同名稱方法,可以用getMethod方法來獲取 c.getMethod("print","int.class,int.class"); 指定參數,獲取方法...
    查看全部
  • 我擦,構造方法也是對象,真他M是萬物皆對象啊 java.lang.Constructor中封裝了構造函數的信息 getConstructor獲取所有的public的構造函數 getDeclaredConstructors得到所有的構造函數 Constructor【】 cs = c.getDeclaredConstructors()
    查看全部
  • getMethd.是獲取方法, getField方法是獲取變量 Field[] fs = c.getDeclaredFields()獲取的是自己申明的變量信息
    查看全部

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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