反射: 將類的各個部分封裝成對象,這就是反射機制
可以在運行過程中 操作這些對象
類加載有下面幾個階段

image.png
獲取Class對象的方式
- Class.forName("全類名"):將字節(jié)碼加載進內(nèi)存,返回class對象
多用于配置文件,將類名定義在配置文件中,讀取文件,加載類
2.類名.class :通過類名的屬性class獲取
多用于參數(shù)的傳遞
3.對象.getClass();在Object定義
多用于對象的獲取字節(jié)碼
public class ReflectionDemo {
public static void main(String[] args) throws ClassNotFoundException {
//使用類名獲取
Class cls1 = Class.forName("Java_Basic.Person");
System.out.println(cls1);
// 類名.class
Class cls2= Person.class;
System.out.println(cls2);
//對象.getClass()
Person p = new Person();
Class cls3=p.getClass();
System.out.println(cls1==cls2);
System.out.println(cls2==cls3);
}
}
比較三個結(jié)果都是true
說明類對象在加載過程中只會被加載一次
Class對象的功能
獲取功能
獲取成員變量們
獲取構(gòu)造方法們
獲取成員方法們
獲取類名

image.png