1. 程式人生 > 實用技巧 >反射之獲取欄位

反射之獲取欄位

 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表示不同的含義