-
筆記總結1查看全部
-
xx的類類型? xx類的類類型
查看全部 -
動態加載類,在運行時刻加載
Class c = Class.forName("類的全稱");
//通過類類型,創建該類對象
OfficeAble oa = (OfficeAble)c.newInstance():
查看全部 -
new 創建對象,是靜態加載類,在編譯時需要加載所有可能使用到的類
查看全部 -
class Foo
Foo foo1 = new Foo();
Class c1 = Foo.class;
Class c2 = foo1.getClass();
Class c3 = Class.forName("com.imooc.reflect.Foo"); //完整路徑
通過類的類類型創建該類的對象實例--》通過 c1 or c2 or c3創建Foo的實例
Foo foo = (Foo) c1.newInstance();//需要有無參數的構造方法
查看全部 -
Demo?demo?=?new?Demo(); Class?c1?=?Demo.class; Class?c2?=?demo.getClass(); Class?c3?=?Class.forName("Demo在src下的絕對路徑");
c1 = c2 = c3 (即三者都是指向同一個引用對象)
實例化則可以通過Demo demo = (Demo)c1(or c2 or c3).newInstance()獲取demo對象。但需要注意:newInstance()會調用Demo類的無參構造函數,如果沒有無參的構造函數會報錯。
查看全部 -
這個時候word這個類已經有了,所以可以加載到,但是Excel沒有存在,所以加載不到,編譯不通過。
但是這個時候程序還是無法執行,因為靜態加載機制中,只要有1個加載不到導致其他的都不能編譯通過,但是我們想要的就是需要用到哪一個就去加載哪一個
查看全部 -
功能性的類使用動態加載而不是靜態加載,類類型是在運行時加載類,new的方式是在編譯的時候加載全部的類,屬于靜態加載類
查看全部 -
動態加載類:
1、使用反射的方式,運行時加載所需類
2、使用類類型實例化具體對象,并返回統一接口的實例對象
3、主只需要編譯一次
查看全部 -
通過Class,Method來認識泛型的本質(javafanshe);
ArryList<String> list= new ArrayList<String>(); ?往集合添加值時,只能添加String類型。
反射的操作都是編譯之后的操作
Java中集合的泛型,是防止錯誤輸入的,只在編譯階段有效,繞過編譯就無效了。
查看全部 -
用java反射獲取print()方法:
首先需要獲取類的信息--A a1=new A(); ? ?Class c=a1.getClass();
獲取方法-(由名稱和參數列表來決定)-----Method m=c.getMethod("print",int.class,int.class); ?其中print 是方法名稱
方法的反射操作--Object 0 = m.invoke(a1,10,20);
查看全部 -
Object 0 = m.invoke(a1,10,20);其中a1是A這個類的實例對象。
查看全部 -
參數列表就是參數已逗號隔開所形成的列表
1)如何獲取某個方法
方法的名稱和方法的參數列表才能唯一決定某個方法
2)方法的反射操作
method.invoke(對象,參數列表)
反射:方法調用的參數列表
查看全部 -
關于反射的相關信息--第二節
成員變量也是對象
java.lang.reflect.Field ? ?Field類封裝了關于成員變量的操作
Field ?c.getDeclaredFields(); 獲取的是該類自己聲明的成員變量的信息
(c為類的信息 ?obj.getClass())
Class field.getType(); ? 得到成員變量的類型的類類型 例如 ?int.class
String field.getName(); 得到成員變量的名稱
構造函數也是對象 ? ?java.lang.Constructor封裝了構造函數的信息
Constructor[] ?c.getDeclaredConstructor();獲取所有本類中自身創建所有的構造函數
Class[] constructor.getParameterTypes();得到的是參數列表的類類型
查看全部 -
java反射相關知識點:
要獲取類的信息 首先要獲取類的類型
Class c= obj.getClass(); ? ? ?c.getName();獲取類的名稱
Method類,方法對象 ?一個成員方法,就是一個Method對象
Method[] c.getDeclaredMethods(); ? 獲取本類的所有聲明的方法
Class ??c.getDeclaredMethods().getReturnType();得到方法的返回值類型
Class??c.getDeclaredMethods()[i].getParameterTypes();得到參數列表的類型的類類型
查看全部
舉報