反射之獲取欄位
阿新 • • 發佈:2021-01-03
1 public class Demo12{ 2 3 /* 4 對任意一個Object例項,只要我們獲取了它的Class,就可以獲取它的一切資訊 5 Class類提供了以下幾個方法來獲取欄位 6 7 Field getField(name):根據欄位名獲取某個public的field(包括父類) 8 Field getDeclaredField(name):根據欄位名獲取當前類的某個field(不包括父類) 9 Field getFields():獲取全部public的field(包括父類) 10 Field getDeclaredField():獲取當前類的全部field(不包括父類)11 */ 12 13 //reflection反射 14 public static void main(String[] args) throws Exception{ //記住要丟擲異常 15 Class stuClass = Student.class; 16 //獲取public欄位"score" 17 System.out.println(stuClass.getField("score"));//public int Student.score 18 //獲取繼承的public欄位"name" 19 System.out.println(stuClass.getField("name"));//public java.lang.String Person.name 20 //獲取private欄位"grade" 21 System.out.println(stuClass.getDeclaredField("grade")); 22 } 23 } 24 25 class Student extends Person{ 26 public int score; 27 //班級欄位私有 28 private int grade; 29 } 30 31 class Person{ 32 public String name;33 }
一個Field物件包含了一個欄位的所有資訊
getName():返回欄位名稱,例如"name"
getType():返回欄位型別,也是一個Class例項,例如,String.class
getModifiers():返回欄位的修飾符,它是一個int,不同的bit表示不同的含義