反射的操作,都是編譯后的操作,對(duì).class文件的操作;
編譯是去泛型的;Java中泛型是防止輸入錯(cuò)誤的,只在編譯階段有效,編譯之后,就沒有了泛型;
利用反射可以繞過編譯中的類型判斷過程
編譯是去泛型的;Java中泛型是防止輸入錯(cuò)誤的,只在編譯階段有效,編譯之后,就沒有了泛型;
利用反射可以繞過編譯中的類型判斷過程
2015-01-15
Class int1=int.class;
Class String1=String.class; //String類的類 類型 String類字節(jié)碼:編譯后的文件-->字節(jié)碼:類名.class
Class String1=String.class; //String類的類 類型 String類字節(jié)碼:編譯后的文件-->字節(jié)碼:類名.class
2015-01-15
編譯和運(yùn)行是不同的:.java-->.class--->運(yùn)行《機(jī)器碼》
靜態(tài)加載類:編譯時(shí)加載所有的,可能使用到的類,即使不用也要加載。100個(gè)類,一個(gè)有錯(cuò),全部報(bào)廢:也浪費(fèi)時(shí)間
動(dòng)態(tài)加載類:運(yùn)行時(shí)加載類
靜態(tài)加載類:編譯時(shí)加載所有的,可能使用到的類,即使不用也要加載。100個(gè)類,一個(gè)有錯(cuò),全部報(bào)廢:也浪費(fèi)時(shí)間
動(dòng)態(tài)加載類:運(yùn)行時(shí)加載類
2015-01-15
1:Class class1=Foo.class; ------->實(shí)際在告訴我們,任何一個(gè)類都有一個(gè)隱含的靜態(tài)成員變量
2: Class class2=foo1.getClass()---->已知該類的對(duì)象,通過該類的對(duì)象通過getClass方法
class1和class2表示Foo類的類 類型(class type) Foo這個(gè)類本身就是一個(gè)對(duì)象,F(xiàn)oo類的對(duì)象:
3:Class class3=null; class3=Class.forName();
class1==class2==class3
2: Class class2=foo1.getClass()---->已知該類的對(duì)象,通過該類的對(duì)象通過getClass方法
class1和class2表示Foo類的類 類型(class type) Foo這個(gè)類本身就是一個(gè)對(duì)象,F(xiàn)oo類的對(duì)象:
3:Class class3=null; class3=Class.forName();
class1==class2==class3
2015-01-15
我們可以通過類 類型創(chuàng)建該類的對(duì)象實(shí)例---->c1,c2,c3創(chuàng)建Foo的實(shí)例對(duì)象
Foo foo=(Foo)c1.newInstance();<須有無參的構(gòu)造方法>
Foo foo=(Foo)c1.newInstance();<須有無參的構(gòu)造方法>
2015-01-15
任何一個(gè)類都是Class的實(shí)例對(duì)象:3種表示方式
class Foo{}
Foo foo1=new Foo();
不能直接new Class()這個(gè)構(gòu)造方法是私有的
class Foo{}
Foo foo1=new Foo();
不能直接new Class()這個(gè)構(gòu)造方法是私有的
2015-01-15
There is a class named Class;萬事萬物皆對(duì)象
java.lang.Class類的對(duì)象/實(shí)例對(duì)象
java.lang.Class類的對(duì)象/實(shí)例對(duì)象
2015-01-15