-
成員變量也是對象 java.lang.reflect.Field Field類封裝了關于成員變量的操作 getFields();//獲取的是所有的public的成員變量的信息 getDeclareFields();//獲取的是該類自己聲明的成員變量的信息 getType();//得到成員變量的類型的類類型 getName();//得到成員變量的名稱 構造函數也是對象 java.lang.Constructor中封裝了構造函數的信息 Class對象.getConstructors();//獲取所有的public的構造方法 Class對象.getDeclaredConstructors();//獲取所有的構造方法 Constructor對象.getParameterTypes();//后去構造參數的列表,返回值是Class數組查看全部
-
基本數據類型和void都有類類型 Method是所有方法的類型 Class對象.getMethods();//獲取的是所有public的函數,包括父類繼承而來的 Class對象.getDeclaredMethods();//獲取的是所有該類自己的聲明的方法,不問訪問權限 Method對象.getReturnType();//得到方法的返回值類類型 Method對象.getParameterTypes();//得到的是參數列表的類型的類類型查看全部
-
new 創建對象 是靜態加載類,在編譯時刻就需要加載所有的可能使用到的類查看全部
-
Class類 1)在面向對象的世界中,萬事萬物皆對象 類是對象,類是java.lang.Class的實例 實例對象的三種表示方式: 1)類名.class 2)實例對象.getClass() 3)Class 對象名 = Class.forName("絕對包路徑"); 我們完全可以通過類的類類型創建該類的對象實例 Foo f=(Foo)c1.newInstance()//需要有無參數的構造方法查看全部
-
只有JVM能創建Class類的實例,它的構造方法是私有的。 任何一個類都是Class的實例對象,這個實例對象有三種表示方式。 第一種表示方式,告訴我們任何一個類都有一個隱含的靜態成員變量class。 Class c1=Foo.class; 第二種表達方式,已經知道該類的對象通過getClass方法 Class c2=foo1.getClass(); 官網c1 c2表示了Foo類的類類型(class type), 萬事萬物皆對象,是Class類的實例對象 這個對象我們稱為該類的類類型 c1==c2 一個類只可能是Class類的一個實例對象,所以以上相等。 第三種表達方式 Class c3 = null; c3=Class.forName("com.imooc.reflect.Foo"); c2==c3==c1 我們完全可以通過類的類類型創建該類的對象實例,即通過c1 c2 c3創建Foo的實例 Foo f=(Foo)c1.newInstance();//需要有無參數的構造方法查看全部
-
類類型:一種類的具體Class型,Class的實例對象,獲取類類型:1,知道類--類.class;2知道類的對象-- 對象.getClass();3,知道類的地址Class.forName(); (這種是動態加載) .動態加載:即運行時候才去找該類。找不到才報錯,其他方式包括new都是編譯器就會加載,即編譯報錯, 動態加載+接口技術實現補丁更新等技術查看全部
-
new 創建對象 是靜態加載類,在編譯時刻就需要加載所有的可能使用的類; 通過動態加載類可以解決該問題 Class c = Class.forName(args[0]); 通過類類型,創建該類對象。 OfficeAble oa=(OfficeAble)c.newInstance(); oa.start(); 定義個接口Interface OfficeAble,讓子類實現它。 在線升級用的就是動態加載類。 功能性的類,要使用動態加載,而不能使用靜態加載。查看全部
-
只有JVM能創建Class類的實例,它的構造方法是私有的。 任何一個類都是Class的實例對象,這個實例對象有三種表示方式。 第一種表示方式,告訴我們任何一個類都有一個隱含的靜態成員變量class。 Class c1=Foo.class; 第二種表達方式,已經知道該類的對象通過getClass方法 Class c2=foo1.getClass(); 官網c1 c2表示了Foo類的類類型(class type), 萬事萬物皆對象,是Class類的實例對象 這個對象我們稱為該類的類類型 c1==c2 一個類只可能是Class類的一個實例對象,所以以上相等。 第三種表達方式 Class c3 = null; c3=Class.forName("com.imooc.reflect.Foo"); c2==c3==c1 我們完全可以通過類的類類型創建該類的對象實例,即通過c1 c2 c3創建Foo的實例 Foo f=(Foo)c1.newInstance();//需要有無參數的構造方法查看全部
-
每個對象所屬的類,都是Class類的實例。查看全部
-
Class類類型查看全部
-
Class類類型查看全部
-
Class類類型查看全部
-
查看全部
-
1、萬事萬物皆對象,任何一個類都是Class類的對象(也稱為該類的類類型)。 2、三種表示方法: ①Class c1 = 類名.class; ②Class c2 = 類的對象.getClass(); ③Class c3 = null; try{ c3 = Class.forName("全路徑類名"); }catch(Exception e){} # 疑問 # 覺得第三種表達方式有點蛋疼,既然知道類的全稱,為何不直接用 類名.class 來獲取該類的類類型? 3、一個類只可能是Class類的一個實例對象 故,c1 == c2 == c3,結果為true 4、可以通過類的類類型創建該類的對象實例 c1.newInstance();查看全部
-
Class類 靜態的成員、普通數據類型不是對象而是屬于類的 類是對象,類是java.lang.Class 類的實例對象(There is a class named Class) public class ClassDemo1 { public static void main(String[] args) { //Foo的實例對象表示方法 Foo foo=new Foo(); //Foo本身也是一個實例對象,是Class的實例對象,如何表示 //任何一個類都是Class類的實例對象,這個實例對象有三種表示方式 //第一種方式-->實際告訴我們任何一個類都有隱含的靜態成員變量class Class c1=Foo.class; //第二種表達方式 已知該類的對象通過getClass方法 Class c2=foo.getClass(); /*官網c1,c2表示了Foo類的類類型(class type)萬事萬物皆對象類也是對象,是Class類的實例對象 */ //不管c1還是c2都代表了Foo類的類類型,一個類只可能是Class類的實例對象 System.out.println(c1==c2);//true //第三種表達方式 Class c3=null; try { c3=Class.forName("Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(c3==c2);//true //可以通過類的類類型創建該類的對象實例,通過c1 or c2 or c3 創建Foo的實例對象 try { Foo foo2=(Foo)c1.newInstance(); }catch (Exception e) { e.printStackTrace();}}} class Foo{}查看全部
舉報
0/150
提交
取消