-
1、普通類Student、Foo的實例對象
2、Class類的實例對象以及類類型三種表示方式
任何普通類都是Class的實例對象
查看全部 -
類類型說明
查看全部 -
Class類
查看全部 -
JAVA-Reflect專題——Java反射
查看全部 -
任何一個類都是Class的實例對象,這個實例對象有三種表示方式
1、Class c1 = Foo.class;
????? ? 第一種表示方式--->實際在告訴我們任何一個類都有一個隱含的靜態成員變量class
2、Class c2 = foo1.getClass();
????????第二種表達方式 已經知道該類的對象通過getClass方法
3、Class c3 = null;
????? c3 = Class.forName("com.imooc.reflect.Foo");//類的全稱且有異常產生
????????第三種表達方式?
????????c1==c2==c3
????????//我們完全可以通過類的類類型創建該類的對象實例
????????//通過c1 c2 c3創建Foo的實例對象
????? ? Foo foo = (Foo)c1.newInstance();//需要有無參數的構造方法
????????同時又有異常產生
????????
查看全部 -
萬事萬物皆對象
類是對象,是java.lang.Class類的實例對象
Foo的實例對象 Foo foo1 = new Foo(); foo1就表示出來了
Foo這個類 也是一個實例對象
任何一個類都是Class的實例對象,有三種表示方式
第一種:實際在告訴我們任何一個類都有一個隱含的靜態成員class
Class c1 = Foo.class;
第二種:已經知道該類的對象通過getClass方法
Class c2 = foo1.getClass();
官網c1 c2表示Foo類的類類型(class type)
第三種: Class c3 = null;
try{
c3 = Class.forName("類的全稱")
}catch(ClassNotFoundException e){
e.printStackTrace();
}
我們完全可以通過類的類類型創建該類的對象實例 ?通過c1 or c2 or c3創建Foo的實例
強制類型轉換
Foo foo = (Foo)c1.newInstance(); //需要有無參數的構造方法
foo.print();
查看全部 -
在追求靈活性時,優先使用動態加載類
查看全部 -
Class.forName()
查看全部 -
編譯之后的泛型是去泛型化的,編譯時候的泛型是為了規定輸入,避免出錯查看全部
-
反射是動態加載類,可以創建通過將類的實例轉化為接口類型,,下次只需要修改接口實現類,重新編譯接口實現類,不需要需要編譯接口類就可以直接運行加載查看全部
-
靜態加載:在編譯時完成,對所有的類進行加載,如果有一個類有問題,那么類就加載不成功, 動態加載:在運行時加載,通過反射創建接口類的實例,實現動態加載查看全部
-
new 創建對象是靜態加載類,在編譯時刻就需要加載左右的可能使用到的類
查看全部 -
obj.class獲取類類型,底層使用native實現的。查看全部
-
普通的數據類型和靜態變量不是面向對象的查看全部
-
new 創建對象 是靜態加載類,在編譯時刻就需要加載所有可能使用到的類。
查看全部
舉報