當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java java.lang.reflect.Field用法及代碼示例


軟件分析自身的能力稱為反射。這是由 java.lang.reflect 包和 Class 中的元素提供的。Field 與整個反射機製具有相同的目的,在運行時而不是在編譯時動態地分析軟件組件並說明其函數。Java 與許多其他語言一樣,是靜態類型的。反射機製允許人們在某種程度上繞過它,並引入一些更動態的函數,例如按名稱檢索字段的值。包 java.lang.reflect 包含多個接口。特別令人感興趣的是 Member,它定義了允許獲取有關類的字段、構造函數或方法的信息的方法。該包中還有十個類,即 AccessibleObject、Array、Constructor、Executable、Field、Method、Modifier、Parameter、Proxy、ReflectPermission。

下麵的應用演示了java反射的簡單使用。它打印類 java.awt.Dimension 的字段。程序從Class的forName()方法開始,獲取java.awt.Dimension的類對象。一旦獲得,getFields() 用於分析類對象。它們返回提供有關該對象的信息的 Field 對象數組。

方法 說明
等於(對象 obj ) 此方法將此字段與指定對象進行比較。
獲取注釋類型() 該方法返回一個AnnotatedType對象,該對象表示使用類型來指定此Field表示的字段的聲明類型
getAnnotation() 如果存在指定類型的該元素的注釋,則此方法返回該元素的注釋,否則返回 null。
getAnnotationByType() 此方法返回與該元素關聯的注釋
getBoolean(Object obj ) 此方法獲取靜態或實例布爾字段的值
getByte(Object obj ) 此方法獲取靜態或實例字節字段的值
getChar(Object obj ) 此方法獲取 char 類型或可通過擴展轉換轉換為 char 類型的其他基本類型的靜態或實例字段的值
getDeclaredAnnotations() 此方法返回直接出現在該元素上的注釋
getDeclaringClass() 此方法返回表示聲明此 Field 對象表示的字段的類或接口的 Class 對象
getDouble(Object obj ) 此方法獲取 double 類型或可通過擴展轉換轉換為 double 類型的其他基本類型的靜態或實例字段的值
getFloat(Object obj ) 此方法獲取 float 類型或可通過擴展轉換轉換為 float 類型的其他基本類型的靜態或實例字段的值
getGenericType() 此方法返回一個 Type 對象,該對象表示此 Field 對象表示的字段的聲明類型
getInt(Object obj ) 此方法返回一個 Type 對象,該對象表示此 Field 對象表示的字段的聲明類型
getLong(Object obj ) 此方法獲取 long 類型的靜態或實例字段的值,或通過擴展轉換可轉換為 long 類型的其他基本類型的值
getModifiers() 此方法以整數形式返回由此 Field 對象表示的字段的 Java 語言修飾符
getName() 此方法返回由此 Field 對象表示的字段的名稱
getShort(Object obj ) 此方法獲取 Short 類型的靜態或實例字段的值,或者通過擴展轉換可轉換為 Short 類型的其他原始類型的值
hashCode() 此方法返回此字段的哈希碼。
isEnumConstant() 如果該字段表示枚舉類型的元素,則該方法返回 true;否則返回 false
isSynthetic() 如果該字段是合成字段,則此方法返回 true;否則返回 false
setBoolean(Object obj , boolean z) 此方法將指定對象上的字段值設置為布爾值
setByte(Object obj, byte b) 此方法將指定對象上的字段值設置為字節
setChar(Object obj, char c) 此方法將指定對象上的字段值設置為字符
setDouble(Object obj, double d) 此方法將指定對象上的字段值設置為雙精度型
setFloat(Object obj, float f) 此方法將字段的值設置為指定對象上的浮點數
setInt(Object obj, int i) 此方法將指定對象上的字段值設置為int
setLong(Object obj, long l) 此方法將指定對象上的字段值設置為 long
setShort(Object obj, short s) 該方法將指定對象上的字段值設置為short
toGenericString() 此方法返回說明此字段的字符串,包括其通用類型
toString() 該方法返回說明該字段的字符串

示例 1:

Java


import java.lang.reflect.Field;  
    
public class GFG {  
    
    public static void main(String[] args)  
        throws Exception  
    {  
    
        // Create the User class object  
        User user = new User();  
    
        // Get the all field objects of User class  
        Field[] fields = User.class.getFields();  
    
        for (int i = 0; i < fields.length; i++) {  
    
            // get value of the fields  
            Object value = fields[i].get(user);  
    
            // print result  
            System.out.println("Value of Field "
                               + fields[i].getName()  
                               + " is " + value);  
        }  
    }  
}  
    
// sample User class  
class User {  
    
    public static String name = "Dipsundar";  
    
    public static String getName()  
    {  
        return name;  
    }  
    
    public static void setName(String name)  
    {  
        User.name = name;  
    }  
}
輸出
Value of Field name is Dipsundar

示例 2:

Java


import java.lang.reflect.Field; 
  
public class GFG { 
  
    public static void main(String[] args) throws Exception 
    { 
  
        // Create the User class object 
        User user = new User(); 
  
        // Get the all field objects of User class 
        Field[] fields = User.class.getFields(); 
  
        for (int i = 0; i < fields.length; i++) { 
  
            // get value of the fields 
            Object value = fields[i].get(user); 
  
            // print result 
            System.out.println("Value of Field "
                               + fields[i].getName() 
                               + " is " + value); 
        } 
    } 
} 
  
// sample User class 
class User { 
  
    public static String name = "Dipsundar"; 
  
    public static String getName() { return name; } 
  
    public static void setName(String name) 
    { 
        User.name = name; 
    } 
}
輸出
Value of Field booleanValue is false


相關用法


注:本文由純淨天空篩選整理自dipsundarmondal大神的英文原創作品 java.lang.reflect.Field Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。