反射——獲取字節碼對象(class的三種方式)

1.反射概述

a:java反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法。
b:對於任意一個對象,都能通過反射調用它的任意一個方法和屬性。
c:這種動態獲取的信息以及動態調用對象的方法的功能成爲java語言的反射機制。
d:要想解剖一個類,必須先要獲取到這個類的字節碼文件對象。
e:而解剖使用的就是Class類中的方法,所以要先獲取到每一個字節碼文件對應的Class類型的對象。

2.獲取字節碼對象的三種方式

1.Object類的getClass方法,判斷兩個對象是否是同一個字節碼文件。
2.靜態屬性class,鎖對象
3.Class類中靜態方法forName(),讀取配置文件。
案例:獲取字節碼對象的三種方式

//第一種
Person p=new Person();
Class cls=p.getClass();
//第二種
Class  cls1=Person.class;
//第三種forName(String className)傳類全路徑(包名+類名)
Class cls2=Class.forName("Demo1.Person");

4.字節碼對象在內存中只有一份,所以上面三中方式針對的其實就是一個字節碼對象

class類中靜態方法forName(),從一個文件中讀取地址

//讀取info.txt文件內容
FileReader fr=new FileReader("info.txt");
BufferedReader br=new BufferedReader(fr);
String className=br.readLine();
br.close();
//獲取字節碼對象
Class cls=new Class.forName(className);
System.out.println(cls);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章