-
new創(chuàng)建對(duì)象是靜態(tài)加載,在編譯時(shí)刻就需要加載所有的可鞥使用到的類(lèi)
查看全部 -
獲取方法對(duì)象,用方法對(duì)象進(jìn)行反射操作
查看全部 -
類(lèi)的類(lèi)類(lèi)型:
查看全部 -
類(lèi)本身就是對(duì)象,是java.lang.Class類(lèi)的實(shí)例對(duì)象
查看全部 -
類(lèi)是對(duì)象,類(lèi)是class的對(duì)象查看全部
-
public static void printClassMessage(Object obj){
Class c=obj.getClass();
Method[] ms=c.getMethods();getmethods獲取所有的public的函數(shù),包括父類(lèi)繼承而來(lái)的。
c.getDeclaredMethods()獲取所有該類(lèi)自己聲明的方法,不問(wèn)訪問(wèn)權(quán)限
for(int i=0;i<ms.length;i++){
Class a=ms[i].getReturnType();得到方法的返回值類(lèi)型的類(lèi)類(lèi)型
String b=ms[i].getName();得到方法的名稱(chēng)
Class[] c=ms[i].getParameterTypes();獲取參數(shù)類(lèi)型。得到的是參數(shù)列表的類(lèi)型的類(lèi)類(lèi)型
for(Class d:c){
String a=d.getName()
}
}
查看全部 -
所有類(lèi)都是class類(lèi)是實(shí)例對(duì)象
class Foo{
}
Foo foo1 = new Foo();
JAVA 反射的三種使用方式
類(lèi)名.Class
類(lèi)的實(shí)例對(duì)象.getClass()
Class.forName("含包的類(lèi)名稱(chēng)完整路徑")
Class c1 = Foo.class;
Class c2 = foo1.getClass();
Class c3 = Class.forName("com.imooc.reflect.Foo"); //完整路徑
c1 c2 c3 為同一個(gè)class的實(shí)例
通過(guò)類(lèi)的類(lèi)類(lèi)型創(chuàng)建該類(lèi)的對(duì)象實(shí)例--》通過(guò) c1 or c2 or c3創(chuàng)建Foo的實(shí)例
Foo foo = (Foo) c1.newInstance();//需要有無(wú)參數(shù)的構(gòu)造方法
查看全部 -
通過(guò)類(lèi)類(lèi)型動(dòng)態(tài)加載類(lèi),newInstance關(guān)鍵字
查看全部 -
通過(guò)NEW關(guān)鍵字創(chuàng)建對(duì)象是靜態(tài)加載類(lèi),在編譯的時(shí)候就要加載所有可能用到的類(lèi)
查看全部 -
Class c=g.getClass();
c.getDeclaredMethods();獲取的是該類(lèi)聲明的方法不問(wèn)訪問(wèn)權(quán)限
c.getMethods();獲取的是該類(lèi)聲明方法返回的public的方法
查看全部 -
class.forName("")
方法.getClass()
查看全部 -
反射查看全部
-
String是Class的實(shí)例,String為該類(lèi)的類(lèi)型
查看全部 -
Class 類(lèi)
類(lèi)是對(duì)象,類(lèi)是java.lang.class類(lèi)的實(shí)例對(duì)象
查看全部 -
new創(chuàng)建對(duì)象是靜態(tài)加載類(lèi),在編譯時(shí)刻就需要加載所有可能用到的類(lèi),如果一個(gè)項(xiàng)目中有100個(gè)方法,99個(gè)沒(méi)問(wèn)題,只有一個(gè)有問(wèn)題,那么如果想要調(diào)用好用的類(lèi)也是沒(méi)法調(diào)用的,就是因?yàn)橛幸粋€(gè)有問(wèn)題,這就是靜態(tài)架子啊的弊端。
查看全部
舉報(bào)