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

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

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

難度入門
時長 1小時20分
學習人數
綜合評分9.67
760人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
  • 動態加載類,在運行時刻加載

    Class c = Class.forName(args[0]);

    通過類類型,創建該類對象

    OfficeAble oa = (officeAble)c.newInstance();????//officeAble為一個接口,里面有start方法

    oa.start;

    查看全部
  • Class.forName("類的全稱")

    不僅表示了類的類類型,還代表了動態加載類。

    編譯時加載類是靜態加載類,運行時加載類是動態加載類。

    查看全部
  • 我們完全可以通過類的類類型創建該類的對象實例,即通過c1 or c2 or c3 創建Foo的實例

    Foo foo = (Foo)c1.newInstance();

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

    2020-07-30

  • Foo foo1 = new Foo();

    任何一個類都是Class的實例對象,這個實例對象有三種表示方式

    第一種表示方式:實際在告訴我們任何一個類都有一個隱含的靜態成員變量class

    class c1 = Foo.class; //在知道類名時使用

    第二種表示方式:已經知道該類的對象通過getClass方式

    Class c2 = foo1.getClass; //在知道對象時使用

    在官網c1、c2表示了Foo類的類類型(class type)

    萬事萬物皆對象,類也是對象,是Class類的實例對象,

    這個對象我們成為該類的類類型。

    第三種表達方式:

    Class c3 = null;

    try{

    c3 = Class.forName("com.imooc.reflect.Foo");

    }catch(ClassNotFoundException e){

    e.printfStackTrace();

    }

    注意:c1=c2=c3 一個類只可能是Class類的一個實例對象.


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

    2020-07-30

  • Class aClass = Class.forName("完整的類名");

    //調用類類型進行實例化時,類中必須有無參的構造函數

    aClass.newInstace();

    查看全部
  • 靜態類似一次性?

    動態則可回收?

    (暫時還不知道該如何理解,等以后理解更深了再回頭看看這個問題,如果有大佬看到這個筆記也可以私聊告訴我一聲,麻煩了。

    查看全部
  • 任何一個類都是Class的實例對象,有三種方法表示這個實例對象

    1. class屬性(隱含的靜態成員變量class),如Class c1 = Foo.class

    2. getClass()方法,如Class c2 = foo1.getClass()

    3. Class.forName()方法,會拋出異常

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

    2020-06-03

  • 編譯時刻加載類是靜態加載類.

    運行時刻加載類是動態加載類.

    查看全部
  • 類 也是一個對象.

    這個對象我們把它稱之為"類類型"

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

    2020-06-02

  • 每個對象所屬的類就是java.lang.Class的實例

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

    2020-06-02

  • 泛型,編譯階段有效

    查看全部
  • 返回值類型的類類型

    返回值類型

    查看全部
  • 我們創建的每一個類(如a),都是Class的實例變量,通過new方式創建類對象

    a的實例變量,套了兩層

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

    2020-05-17

    1. new 創建對象是靜態加載類:

      編譯時需將其中所有的類加載進來,如共有100個類,其中出現1個類有問題,其他99個類均不能正常加載。例如:

    ????? ? /*如需求去掉Excel類功能,但保留Word功能,代碼中Word在前,則此時Word功能也無法執行*/

    ????????if("Word".equals(arg[0])){

    ????? ? Word w = new Word();

    ????????}

    ????????if("Excel".equals(args.[0])){

    ????????Excel e = new Excel();

    ????????}????

    2.動態加載:用哪個就加載哪個,不用不加載

    Class OfficeBetter{

    ????publice void static main(String[] args){

    ????????//動態加載類,在運行時刻加載

    ????????Class c = Class.forName(args[0]);

    ????????//通過返回類類型,創建該類對象

    ????????類名 待建類名 = (類名) c.newInstance();?

    ????????待建類名.start();

    ????}

    }

    【注意】

    //下面一行可用Interface編寫標準,防不同類做強制轉換時報錯

    *********類名 待建類名 = (類名) c.newInstance();*************

    //例如:

    OfficeAble oa = (OfficeAble) c.newInstance();


    //新建一個接口文件:

    interface OfficeAble{

    ????public void start();

    }


    //讓接口在待強制轉換類型的類中生效

    class Word implements OfficeAble{

    ? ? public static void start(){

    ????System.out.println("This is Word");

    ????}

    }


    //不被轉換類型的類不生效OfficeAble接口

    class Excel{

    ????publice static start(){

    ????????System.Out.println("This is Excel");

    ????}

    }

    //則????OfficeAble oa = (OfficeAble) c.newInstance();????就會自動創建Word類的對象,而不創建Excel類的對象


    查看全部
  • 1.創建一個類:

    知道類名:直接.class

    Class Name1 = Name.class

    知道類的對象:使用getClass()方法

    Name name = new Name();

    Class name1 = name.getClass();

    全稱創建類:

    Class name = null;

    name = Class.forName("com.packagename.classname.classname_toCreate");

    類的對象創建:N類類型的對象創建N類的對象

    //需要有無參的構造方法

    Name name = new Name();

    Name na =(Name) name.newInstance();


    ?

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

    2020-03-30

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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