1.類加載器
? (1) 負責將class文件加載到內(nèi)存中叽躯,并為之生成對應(yīng)的Class對象锌历;
?? (2)類加載器的組成
Bootstrap ClassLoader? 根類加載器
???也被稱為引導(dǎo)類加載器眉菱,負責java核心類的加載(比如System,String等在JDK中jre的lib目錄下rt.jar文件中)
Extension ClassLoader 擴展類加載器
負責JRE的的擴展目錄中jar包的加載(在JDK中jre的lib目錄下的ext目錄)
System ClassLoader 系統(tǒng)類加載器
負責在JVM啟動時加載來自java命令的class文件踩验,以及classpath環(huán)境變量所指定的jar包和類路徑)
2.反射
??????? JAVA反射機制是在運行狀態(tài)中状飞,對于任意一個類,都能夠知道這個類的屬性和方法狂打;對于任意一個對象擂煞,都能夠調(diào)用它的任意一個方法和屬性,這樣動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能稱為java語言的反射機制趴乡。(簡單說:反射就是通過class文件對象对省,去使用該文件中的成員變量,構(gòu)造方法浙宜,成員方法)
3.獲取class文件對象的方式
A:Object類的getClass()方法
? ???? Person p = new Person();
?????? Class c = p.getClass();
B:數(shù)據(jù)類型的靜態(tài)屬性class
? ? ? Class c3 = Person.class;
C:Class類中的靜態(tài)方法
??????? public static Class forName(String className)
? ? ? ? Class c4 = Class.forName("Reflect.Person");? //這里需要完整類名
4.通過反射獲取構(gòu)造方法并使用
(1)獲取構(gòu)造方法
public Constructor[] getConstructors(); 所有公共構(gòu)造方法
public Constructor[] getDeclaredConstructors(); 所有構(gòu)造方法
(2)獲取單個構(gòu)造方法