【譯】4. Java反射——字段


原文地址:http://tutorials.jenkov.com/java-reflection/fields.html

 ========================================================================================

     使用java反射,你可以在運行時檢查類的字段(成員變量)並且get/set它們的值。這些是通過Java類java.lang.reflect.Field做的。本文將會給出更詳細的關於Field對象的信息。請記住也去查閱Sun的JavaDoc。下面是主題列表:

  1. Obtaining Field Objects (獲取Field對象)
  2. Field Name (字段名)
  3. Field Type (字段類型)
  4. Getting and Setting Field Values (get/set字段的值)

 

 ========================================================================================

  • Obtaining Field Objects 

     從Class對象中獲取Field對象。這里有一個例子:

Class aClass = ...//obtain class object
Field[] methods = aClass.getFields();

 

     數組Field[ ]將會存儲在類中聲明的所有為public的字段的Field對象。

     如果你知道你想要訪問的字段的字段名,你可以像這樣來訪問它:

Class  aClass = MyObject.class
Field field = aClass.getField("someField");

 

     上面的例子將會返回Field實例,和下面MyObject聲明的字段someField對應:

 

public class MyObject{
  public String someField = null;
}

 

     如果不存在和方法getField( )接受的參數一致的字段,會拋出NoSuchFieldException異常。

 

 ========================================================================================

  • Field Name 

  一旦你獲取了一個Field實例,你可以像這樣通過Field.getName()方法取得字段名:

Field field = ... //obtain field object
String fieldName = field.getName();

 

 ========================================================================================

  • Field Type 

     你可以通過Field.getType() 方法取得字段類型(String, int etc.) :

Field field = aClass.getField("someField");
Object fieldType = field.getType();

 

 ========================================================================================

  • Getting and Setting Field Values

  一旦你獲取了Field對象的引用,你可以像這樣通過Field.get()方法和Field.set()方法get/set字段的值:

Class  aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);

     傳給get和set方法的參數objectInstance必須是擁有該字段的實例。在上面的例子中,用了一個MyObject的實例,因為someField是類MyObject的成員實例。
     如果字段是靜態字段(public static …),則傳null作為get和set方法的參數,而不是上面傳的objectInstance。

 

 ========================================================================================

 

  • 目錄

 

  這是一個本教程到目前為止涵蓋的主題列表:     

 

  1. Java反射——引言
  2. Java反射——Class對象
  3. Java反射——構造函數
  4. Java反射——字段
  5. Java反射——方法
  6. Java反射——Getter和Setter
  7. Java反射——私有字段和私有方法
  8. Java反射——注解
  9. Java反射——泛型
  10. Java反射——數組
  11. Java反射——動態代理
  12. Java反射——類的動態加載和重新加載

 

(敬請期待下一篇翻譯)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM