-
靜態加載類:編譯時刻加載
動態加載類:運行時刻加載
new方式創建對象是靜態加載類
Class.forName(“類的全稱”)是動態加載類,獲得該類的類類型,通過(類名)類類型.newInstance()方法獲得該類的對象(需要強制類型轉換)。
功能性的類一般使用動態加載,這些功能性的類應該遵循相同的標準(interface)
查看全部 -
@Java反射機制---獲取方法信息
基本數據類型,void關鍵字都存在類類型
class.getName():獲取類的名稱
class.getSimpleName():不包含包名的類的名稱
class.getMethods():獲取是該類的所有public方法,包括從父類繼承的方法
class.getDeclareMethods():獲取該類自行聲明的所有方法,不論訪問權限
method.getName():獲取方法名
method.getReturnType():獲取方法的返回值
method.getParameterTypes():獲取方法的參數類型的類類型數組class[]一、基本的數據類型,void關鍵字等都存在類類型
????Class c = 基類.class (int,String,double,void等)
二、Class類的基本API操作
????1、c.getName()可以獲取類的名稱
????2、c.getSimpleName();//不包含包名的類的名稱
????3、c.getMethods()獲取類的【public方法】集合,【包括繼承來的】
????4、c.getDeclaredMethods()獲取的是所有該類【自己聲明】的方法,【不問訪問權限】
????注意【所有方法都是Method類的對象】
三、Method類提供了操作方法的方法
????1、m.getReturnType()得到該方法的返回值類型的類類型(class),如int.class String.class
????2、m.getName()得到方法的名稱
????3、m.getParameterTypes()獲得參數列表類型的類類型,如參數為(int,int)則得到(int.class ,int class)
????Class c1 = int.class; int的類類型
????Class c2 = String.class; String類的類類型 String類字節碼
????Class c3 = double.class; double這個數據類類型的字節碼表示方式
????Class c4 = Double.class; Double這個類的類類型字節碼表示方式
????Class c5 = void.class; 表達了void這個類的類類型
????getName為這個類的類類型的具體名稱
????c1.getName ---> int
????c2.getName ---> java.lang.String 類的全稱
????c2.getSimpleName ---> String 不包含包名的類的名稱查看全部 -
@Java反射機制---動態加載類
1.靜態加載類,是編譯時刻加載;動態加載類,是運行時刻加載。
2.new創建對象:是靜態加載類,在編譯時刻就需要加載所有的【可能使用到的類】。有一個類有問題(如不存在),都不能通過編譯,會報錯。
3.Class.forName()通過動態加載類,可以用到一個類時,才進行加載。
【功能性的類盡量使用動態加載,并對新添的類實現功能性接口(標準),這樣就不用重新編需要統一標準(interface)
其他的類要遵循這個標準(implements)
查看全部 -
new 靜態加載
查看全部 -
萬事萬物皆對象
類也是對象,任何一個類都是Class類的一個實例對象。
類對象的三種表達方式(例如現有類Foo()):
1:Class c1=Foo.class;
2:Foo foo1=new Foo();
Class c2=foo1.getClass();
3.Class c3=Class.forName(“類的全稱”);
c1=c2=c3表示了不論何種方式創建,都是同一個對象(只是Class類的一個實例對象)
查看全部 -
類是誰的對象呢?
類是對象,類是java.lang.Class類的實例對象
查看全部 -
反射的應用:創建實例? ? Foo foo=(Foo)c1.newInstance();
查看全部 -
@Java反射機制---獲取方法信息
基本數據類型,void關鍵字都存在類類型
class.getName():獲取類的名稱
class.getSimpleName():不包含包名的類的名稱
class.getMethods():獲取是該類的所有public方法,包括從父類繼承的方法
class.getDeclareMethods():獲取該類自行聲明的所有方法,不論訪問權限
method.getName():獲取方法名
method.getReturnType():獲取方法的返回值
method.getParameterTypes():獲取方法的參數類型的類類型數組class[]一、基本的數據類型,void關鍵字等都存在類類型
????Class c = 基類.class (int,String,double,void等)
二、Class類的基本API操作
????1、c.getName()可以獲取類的名稱
????2、c.getSimpleName();//不包含包名的類的名稱
????3、c.getMethods()獲取類的【public方法】集合,【包括繼承來的】
????4、c.getDeclaredMethods()獲取的是所有該類【自己聲明】的方法,【不問訪問權限】
????注意【所有方法都是Method類的對象】
三、Method類提供了操作方法的方法
????1、m.getReturnType()得到該方法的返回值類型的類類型(class),如int.class String.class
????2、m.getName()得到方法的名稱
????3、m.getParameterTypes()獲得參數列表類型的類類型,如參數為(int,int)則得到(int.class ,int class)
????Class c1 = int.class; int的類類型
????Class c2 = String.class; String類的類類型 String類字節碼
????Class c3 = double.class; double這個數據類類型的字節碼表示方式
????Class c4 = Double.class; Double這個類的類類型字節碼表示方式
????Class c5 = void.class; 表達了void這個類的類類型
????getName為這個類的類類型的具體名稱
????c1.getName ---> int
????c2.getName ---> java.lang.String 類的全稱
????c2.getSimpleName ---> String 不包含包名的類的名稱查看全部 -
@Java反射機制---動態加載類
1.靜態加載類,是編譯時刻加載;動態加載類,是運行時刻加載。
2.new創建對象:是靜態加載類,在編譯時刻就需要加載所有的【可能使用到的類】。有一個類有問題(如不存在),都不能通過編譯,會報錯。
3.Class.forName()通過動態加載類,可以用到一個類時,才進行加載。
【功能性的類盡量使用動態加載,并對新添的類實現功能性接口(標準),這樣就不用重新編譯】查看全部 -
@Java反射機制---Class類的使用
類是誰的對象:類是java.lang.Class類的實例對象。除了靜態的成員 和 普通數據類型。1.任何類都是Class類的實例對象 ,這個對象表示這個類的類類型(class type)
2.獲得class實例有三種方法,例: Foo foo = new Foo();
?· 通過類名 Class c1 = Foo.class; 得到(說明每個類都有一個隱含的靜態成員)
?· 通過類的實例 Class c2 = foo.getClass(); 得到
?· 通過 Class c3 = Class.forName(Foo); 得到
3.創建類的實例:Foo foo = (Foo)c1.newInstance();//需要有無參數的構造方法查看全部 -
編譯時刻加載類是靜態加載類,運行時刻加載類是動態加載類
功能性的類使用動態加載類
查看全部 -
動態加載類、動態加載類:在設計程序的時候要有思想上的提升,比如功能類就需要動態加載類
查看全部 -
new 創建對象 是靜態加載類,在編譯時就需要加載所有的可能使用到的類。
功能性的類為了避免靜態加載類可能產生的相互影響而導致其它功能也無法正常使用,盡量使用動態加載類
查看全部 -
?new創建對象是靜態加載類,在編譯時刻就需要加載所有可能用到的類
查看全部 -
類加載方法
查看全部
舉報