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

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

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

難度入門
時長 1小時20分
學習人數
綜合評分9.67
760人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
  • int a =5 靜態 不是對象
    查看全部
    0 采集 收起 來源:Class類的使用

    2017-04-13

  • 動態加載,可以在 class使用到的時候才進行加載,防止因為一個類有錯誤導致多個類跑不起來的問題。--動態加載
    查看全部
  • 1,基本的數據類型,關鍵字都存在類類型。 例子:int.class String.class Double.class Class c = obj.getClass(); 方法也是對象: Method類:方法對象 Method[] ms = c.getMethods();//獲取所有public方法,包括父類繼承的方法 ms.getName();//方法的名稱 Class returnType = ms.getReturnType(); returnType.getName();//返回值類型 Class[] paramTypes = ms.getParameterTypes();//參數的類類型數組
    查看全部
  • 已完成
    查看全部
  • 獲取方法:getMethod(方法名,參數列表) 參數列表為:參數類型.class,也可以寫成數組new Class[]{參數類型.class}
    查看全部
  • 基本數據類型、返回值類型void都存在類類型,如:int.class,void.class,double.class
    查看全部
  • new對象是編譯時加載(靜態),forName是運行時加載(動態) 短期類升級或者功能型的類要使用動態加載
    查看全部
  • 6.通過反射了解集合泛型的本質 import java.lang.reflect.Method; import java.util.ArrayList; /** * 通過反射了解集合泛型的本質 * @author shm * */ public class MethodDemo02 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("hello"); list.add(20); ArrayList<String> list1 = new ArrayList<String>(); list1.add("hello"); //list1.add(20);//這個加入是錯誤的:The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (int) Class c1 = list.getClass(); Class c2 = list1.getClass(); System.out.println(c1==c2); //反射的操作都是編譯后的操作 /** * c1=c2結果返回TRUE說明編譯后集合的泛型是去泛型化的 * java中集合的泛型,是防止錯誤輸入的,只在編譯階段有效,繞過編譯后就無效了 * 驗證:我們可以通過反射操作來繞過編譯 */ try { Method method = c2.getMethod("add", Object.class); method.invoke(list1, 20); System.out.println(list1); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
    查看全部
  • 5.方法的反射 (1)如何獲取某個方法 方法的名稱和方法的參數列表才能唯一決定某個方法 (2)方法的反射的操作 mentod.invoke(對象,參數列表) eg: A a1= new A(); Class c = a1.getClass(); Method method = c.getMethod("print",int.class,int.class); method.invoke(a1);//等同于a1.print();的效果
    查看全部
  • 4.打印類成員變量信息 /** * 打印類成員變量信息 * java.lang.reflect.Field * getFields() 獲取所有public成員變量信息 * getDeclaredFields() 獲取該類自己的聲明的信息 * @param obj */ public static void printFieldMessage(Object obj) { Class c = obj.getClass(); //Field[] field = c.getFields(); Field[] fields = c.getDeclaredFields(); for (Field field : fields) { //得到成員變量的類型的類類型 Class fieldType = field.getType(); System.out.print("成員變量類型:"+fieldType.getName()); //得到成員變量名稱 String fieldName = field.getName(); System.out.print(" 成員變量名稱:"+fieldName); System.out.println(); } }
    查看全部
  • 1,集合的泛型,是防止錯誤輸入的,只在編譯階段有效 可以用反射的方法繞過泛型,向集合中添加元素 List<String> list; list.add(100); m.invoke(list,100);
    查看全部
  • Important
    查看全部
  • ...
    查看全部
  • 方法的反射 1,方法的名稱和參數列表才能決定某個方法 2,方法的反射操作method.invoke(對象,參數列表) Class c = new Class(); c.print(); Method m = c.getMe......; m.invoke();
    查看全部
  • 1,基本的數據類型,關鍵字都存在類類型。 例子:int.class String.class Double.class Class c = obj.getClass(); 方法也是對象: Method類:方法對象 Method[] ms = c.getMethods();//獲取所有public方法,包括父類繼承的方法 ms.getName();//方法的名稱 Class returnType = ms.getReturnType(); returnType.getName();//返回值類型 Class[] paramTypes = ms.getParameterTypes();//參數的類類型數組
    查看全部

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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