軟件分析自身的能力稱為反射。這是由 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
相關用法
- Java java.lang.reflect.Field.equals()用法及代碼示例
- Java java.lang.reflect.Field.get()用法及代碼示例
- Java java.lang.reflect.Field.getAnnotation()用法及代碼示例
- Java java.lang.reflect.Field.getBoolean()用法及代碼示例
- Java java.lang.reflect.Field.getByte()用法及代碼示例
- Java java.lang.reflect.Field.getChar()用法及代碼示例
- Java java.lang.reflect.Field.getDeclaredAnnotations()用法及代碼示例
- Java java.lang.reflect.Field.getDeclaringClass()用法及代碼示例
- Java java.lang.reflect.Field.getDouble()用法及代碼示例
- Java java.lang.reflect.Field.getFloat()用法及代碼示例
- Java java.lang.reflect.Field.getGenericType()用法及代碼示例
- Java java.lang.reflect.Field.getInt()用法及代碼示例
- Java java.lang.reflect.Field.getLong()用法及代碼示例
- Java java.lang.reflect.Field.getModifiers()用法及代碼示例
- Java java.lang.reflect.Field.getName()用法及代碼示例
- Java java.lang.reflect.Field.getShort()用法及代碼示例
- Java java.lang.reflect.Field.getType()用法及代碼示例
- Java java.lang.reflect.Field.hashCode()用法及代碼示例
- Java java.lang.reflect.Field.isEnumConstant()用法及代碼示例
- Java java.lang.reflect.Field.isSynthetic()用法及代碼示例
- Java java.lang.reflect.Field.setBoolean()用法及代碼示例
- Java java.lang.reflect.Field.setByte()用法及代碼示例
- Java java.lang.reflect.Field.setChar()用法及代碼示例
- Java java.lang.reflect.Field.setDouble()用法及代碼示例
- Java java.lang.reflect.Field.setFloat()用法及代碼示例
注:本文由純淨天空篩選整理自dipsundarmondal大神的英文原創作品 java.lang.reflect.Field Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。