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

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

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

難度入門
時長 1小時20分
學習人數
綜合評分9.67
760人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
  • 獲取類的成員對象 Field[]=c.getFields() 獲取全部的 Field[]=c.getDeclaredFieds()
    查看全部
  • 獲取累的方法 Method[]=c.getmethod()
    查看全部
  • 反射課程的內容
    查看全部
    0 采集 收起 來源:Class類的使用

    2017-03-29

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

    2017-03-28

  • 類的動態加載
    查看全部
  • Class類的概念
    查看全部
    0 采集 收起 來源:Class類的使用

    2017-03-28

  • 3.獲取方法信息 import java.lang.reflect.Method; public class ClassUtil { public static void printClassMessage(Object obj){ //獲取類的信息,首先獲取類的類類型 Class c = obj.getClass(); //獲取類的名稱 String className = c.getName(); //獲取類的方法 Method[] methods = c.getMethods();//獲取自己聲明的方法c.getDeclaredMethods(); for(Method method:methods){ //獲取方法返回值類型 Class returnType = method.getReturnType(); //獲取方法的名稱 String methodName = method.getName(); //獲取方法參數類型 Class[] pramTypes = method.getParameterTypes(); } } }
    查看全部
  • 1.Class類的使用 //Object的實例對象如何表示 Object obj = new Object(); //任何一個類都是Class的實例對象,這個實例對象有三種表達方式: (1) Class c1 = Object.class; (2) Class c2 = obj.getClass(); (3) Class c3 = Class.forName(" java.lang.Object"); 其中:c1==c2==c3 //通過類的類類型創建該類的對象實例。 Object obj = (Object)c1.newInstance();
    查看全部
    0 采集 收起 來源:Class類的使用

    2018-03-22

  • 2.動態類加載: //動態加載類,在運行時刻加載 Class c = Class.forName("類名"); //通過類類型,創建該類對象 Object obj = (Object)c.newInstance();
    查看全部
  • 1. 萬變不離其宗:要想獲得類的信息,就必須要獲得類的類類型 2. 把一段代碼單獨載出去寫成一個方法: 選定代碼塊 -->Refactor(重構)--> Extract Method(抽取方法)-->給導出的方法命名。 成員變量也是對象 java.lang.reflect.Field Filed類封裝了成員變量的操作 getFields()方法獲取的是所有public成員的信息 構造函數也是對象; java.lang.Constructor中封裝了構造函數的信息; getConstructors獲取所有的public的構造函數; getDeclaredConstructors得到所有的構造函數;
    查看全部
  • 1. 基本的數據類型、void關鍵字都有類類型。 截圖中的double.class和Double.class是不同的類類型,前者是數據類型double的類類型,后者是Double類的類類型。 getSimpleName()可以返回不包含包名的類名。 2. Class類的基本API操作。 public static void printClassMessage(Object obj){ //要獲取類的信息,首先要獲取類的類類型 Class c = obj.getClass();//傳遞的是哪個子類的對象,c就是該子類的類類型 //獲取類的名稱 System.out.println("類的名稱是"+c.getName()); /*萬事萬物皆對象 * Method類——方法對象 * 一個成員方法就是一個Method對象 * Method類封裝了對成員方法的操作 * getMethods()方法獲取的是所有的public的函數,包括從父類繼承而來的 * getDelaredMethods()獲取的是所有該類自己聲明的方法,不問訪問權限 */ Method[] ms = c.getMethods();//或者c.getDeclaredMethods() for(int i=0;i<ms.length;i++){ //得到方法的返回值類型的類類型 Class returnType = ms[i].getReturnType(); System.out.print(returnType.getName()+" ");//返回值類型的名字 //得到方法的名稱 System.out.print(ms[i].getName()+"("); //獲取參數類型--->得到的是參數列表的類型的類類型 Class[] paramTypes = ms[i].getParameterTypes(); for (Class class1 : paramTypes) { System.out.println(class1.getName()+","); } System.out.println(")"); } }
    查看全部
  • 集合中的類型 還是原來的類型 因此不能夠用forech來遍歷 會引起類型轉化錯誤
    查看全部
  • c1 == c2 返回true說明編譯之后集合的泛型是去泛型化的 集合沒有泛型 也就是說Java中集合的泛型 是防止錯誤輸入的 只有在編譯時刻有效 繞過編譯就無效了 變異之后 泛型都是去泛型化的 一個集合中放一種類型 放其他的類型 就出錯 驗證:用方法的反射操作 繞過編譯
    查看全部
  • 反射的操作都是編譯之后的操作 都是變成字節碼(類類型)之后的操作
    查看全部
  • 除了基本的數據類型、靜態成員不是對象,萬事萬物皆對象,而基本的數據類型可封裝為包裝類。 1、靜態加載類,是編譯時刻加載;動態加載類,是運行時刻加載 2、new創建對象:是靜態加載類,在編譯時刻就需要加載所有的【可能使用到的類】。有一個類有問題(如不存在),都不能通過編譯,會報錯。 3、Class.forName()通過動態加載類,可以用到一個類時,才進行加載。 【功能性的類盡量使用動態加載,并對新添的類實現功能性接口(標準),這樣就不用重新編譯】 動態加載:即運行時候才去找該類。找不到才報錯,其他方式包括new都是編譯器就會加載,即編譯報錯, 動態加載+接口技術實現補丁更新等技術
    查看全部

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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