-
Method類,方法對(duì)象
一個(gè)成員方法就是一個(gè)Method對(duì)象
getMethods()方法獲取的是所有的public的函數(shù),包括父類繼承而來的
getDeclaredMethods()獲取的是所有該類自己聲明的方法,不管訪問權(quán)限
查看全部 -
????????????????????????????????????????????Class類
Class.forName("類的全稱")
不僅表示了類的類類型,還代表了動(dòng)態(tài)加載類
編譯時(shí)刻加載類是靜態(tài)加載類、運(yùn)行時(shí)刻加載類是動(dòng)態(tài)加載類
查看全部 -
class Foo{}
Foo foo1=new Foo();
任何一個(gè)類都是Class的實(shí)例對(duì)象,這個(gè)實(shí)例對(duì)象有三種表示方式
第一種表示方式????任何一個(gè)類都有一個(gè)隱含的靜態(tài)成員變量class
????Class c1=Foo.class;
第二種表達(dá)方式????已經(jīng)知道該類的對(duì)象通過getClass方法
????Class c2=foo1.getClass();
c1,c2表示了Foo類的類類型(class type)
第三種表達(dá)方式
????Class c3=null;
????c3=Class.forName("路徑 ? 包.類名");
我們完全可以通過類的類類型創(chuàng)建該類的對(duì)象實(shí)例
Foo foo=(Foo) c1.newInstance();
查看全部 -
獲取一個(gè)類的類類型(java.lang.Class的實(shí)例對(duì)象)的三種方式: 1 類名.class 如: User.class 2 類的實(shí)例對(duì)象.getClass 如: user.getClass 3 Class.forName("類的全限定名") 如: Class.forName("com.zhuyc.User")查看全部
-
泛型的本質(zhì):編譯之后的泛型是去泛型化的
Java中集合的泛型,是防止錯(cuò)誤輸入的,只在編譯階段有效,繞過編譯就無效了
驗(yàn)證,我們可以通過方法的反射操作,繞過編譯,繞過編譯操作就繞過了泛型
動(dòng)態(tài)代理中,要執(zhí)行某個(gè)類的方法時(shí),先生成該類的代理類,通過代理類去調(diào)用目標(biāo)類的方法,從而可以在代理類中執(zhí)行 額外的邏輯。為了動(dòng)態(tài)生成代理類,而不事先生成,我們就需要利用到反射。
查看全部 -
Java方法反射的基本操作:
如何獲取某個(gè)方法:方法的名稱和方法的參數(shù)列表才能唯一決定某個(gè)方法
方法反射的操作:method.invoke(對(duì)象,參數(shù)列表)
查看全部 -
先得到類的類類型,就可以進(jìn)行對(duì)該類的各種常規(guī)操作了
查看全部 -
編譯和運(yùn)行怎么區(qū)分?
編譯時(shí)刻加載類是靜態(tài)加載類,運(yùn)行時(shí)刻加載類是動(dòng)態(tài)加載類
new 創(chuàng)建對(duì)象是靜態(tài)加載類,在編譯時(shí)刻就需要加載所有的可能使用到的類
通過動(dòng)態(tài)加載類可以解決該問題,在運(yùn)行時(shí)刻加載
查看全部 -
反射專題:
class類的使用:萬事萬物皆對(duì)象,但是普通的數(shù)據(jù)類型類不是對(duì)象,但是有包裝類,靜態(tài)的成員不是對(duì)象,類是誰的對(duì)象?類是java.lang.Class類 的實(shí)例對(duì)象
方法的反射,成員變量的反射,構(gòu)造函數(shù)的反射,Java類加載機(jī)制
查看全部 -
反射的操作都是編譯之后的操作
查看全部 -
Class.forName("類的全稱")
不僅代表了類的類類型,還代表了動(dòng)態(tài)加載類
編譯時(shí)刻 加載類是靜態(tài)加載類
運(yùn)行時(shí)刻加載類是動(dòng)態(tài)加載類
查看全部 -
new 創(chuàng)建對(duì)象是靜態(tài)加載類,在編譯時(shí)刻就需要加載所有的可能使用到的類
查看全部 -
反射查看全部
-
類名.class? ?類的類類型? ? (teacher所說類名.class是類的字節(jié)碼方便記憶)
類類型.getName();//打印類的全稱
類類型.getSimpleName();//打印不帶包名的類的名稱
基本數(shù)據(jù)類型,void關(guān)鍵字 都存在類類型
獲取類的信息,首先要獲取類的類類型(三種方法)
Class c=obj.getClass();????????//obj是哪個(gè)子類的對(duì)象,c就是該子類的類類型
//獲取類的名稱
c.getName();
//Method類,方法對(duì)象(一個(gè)成員方法就是一個(gè)method對(duì)象)
getMethods()方法獲取的是所有的public的函數(shù),包括父類繼承而來的
getDeclaredMethods()獲取的是所有該類自己聲明的方法,不管訪問權(quán)限
查看全部 -
new 創(chuàng)建對(duì)象 是靜態(tài)加載類 ,在編譯時(shí)就需要加載所有的可能使用到的類
動(dòng)態(tài)加載類就是避免整個(gè)程序不能編譯通過而影響正常的代碼的執(zhí)行
具體方法:
//動(dòng)態(tài)加載類,在運(yùn)行時(shí)加載
Class c= Class.forName("類的全稱");
//通過類類型,創(chuàng)建該類對(duì)象
OfficeAble oa=(OfficeAble)c.newInstance();
oa.start();
具體使用的時(shí)候再來實(shí)現(xiàn)OfficeAble接口
查看全部
舉報(bào)