|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.lang.reflect.AccessibleObject java.lang.reflect.Field
public final class Field
Field
提供有關類別或介面的單個欄位的資訊,以及對它的動態存取權限。反射的欄位可能是一個類別(靜態)欄位或實例欄位。
Array
允許在執行 get 或 set 存取操作期間進行擴展轉換,但如果將發生收縮轉換,則拋出一個 IllegalArgumentException
。
Member
,
Class
,
Class.getFields()
,
Class.getField(String)
,
Class.getDeclaredFields()
,
Class.getDeclaredField(String)
欄位摘要 |
---|
從介面 java.lang.reflect.Member 繼承的欄位 |
---|
DECLARED, PUBLIC |
方法摘要 | ||
---|---|---|
boolean |
equals(Object obj)
將此 Field 與指定物件比較。 |
|
Object |
get(Object obj)
返回指定物件上此 Field 表示的欄位的值。 |
|
|
getAnnotation(Class<T> annotationClass)
如果存在該元素的指定型別的註釋,則返回這些註釋,否則返回 null。 |
|
boolean |
getBoolean(Object obj)
獲取一個靜態或實例 boolean 欄位的值。 |
|
byte |
getByte(Object obj)
獲取一個靜態或實例 byte 欄位的值。 |
|
char |
getChar(Object obj)
獲取 char 型別或另一個通過擴展轉換可以轉換為 char 型別的基本型別的靜態或實例欄位的值。 |
|
Annotation[] |
getDeclaredAnnotations()
返回直接存在於此元素上的所有註釋。 |
|
Class<?> |
getDeclaringClass()
返回表示類別或介面的 Class 物件,該類別或介面宣告由此 Field 物件表示的欄位。 |
|
double |
getDouble(Object obj)
獲取 double 型別或另一個通過擴展轉換可以轉換為 double 型別的基本型別的靜態或實例欄位的值。 |
|
float |
getFloat(Object obj)
獲取 float 型別或另一個通過擴展轉換可以轉換為 float 型別的基本型別的靜態或實例欄位的值。 |
|
Type |
getGenericType()
返回一個 Type 物件,它表示此 Field 物件所表示欄位的宣告型別。 |
|
int |
getInt(Object obj)
獲取 int 型別或另一個通過擴展轉換可以轉換為 int 型別的基本型別的靜態或實例欄位的值。 |
|
long |
getLong(Object obj)
獲取 long 型別或另一個通過擴展轉換可以轉換為 long 型別的基本型別的靜態或實例欄位的值。 |
|
int |
getModifiers()
以整數形式返回由此 Field 物件表示的欄位的 Java 語言修飾符。 |
|
String |
getName()
返回此 Field 物件表示的欄位的名稱。 |
|
short |
getShort(Object obj)
獲取 short 型別或另一個通過擴展轉換可以轉換為 short 型別的基本型別的靜態或實例欄位的值。 |
|
Class<?> |
getType()
返回一個 Class 物件,它標識了此 Field 物件所表示欄位的宣告型別。 |
|
int |
hashCode()
返回該 Field 的雜湊碼。 |
|
boolean |
isEnumConstant()
如果此欄位表示列舉型別的元素,則返回 true;否則返回 false。 |
|
boolean |
isSynthetic()
如果此欄位是復合欄位,則返回 true;否則返回 false。 |
|
void |
set(Object obj,
Object value)
將指定物件變數上此 Field 物件表示的欄位設置為指定的新值。 |
|
void |
setBoolean(Object obj,
boolean z)
將欄位的值設置為指定物件上的一個 boolean 值。 |
|
void |
setByte(Object obj,
byte b)
將欄位的值設置為指定物件上的一個 byte 值。 |
|
void |
setChar(Object obj,
char c)
將欄位的值設置為指定物件上的一個 char 值。 |
|
void |
setDouble(Object obj,
double d)
將欄位的值設置為指定物件上的一個 double 值。 |
|
void |
setFloat(Object obj,
float f)
將欄位的值設置為指定物件上的一個 float 值。 |
|
void |
setInt(Object obj,
int i)
將欄位的值設置為指定物件上的一個 int 值。 |
|
void |
setLong(Object obj,
long l)
將欄位的值設置為指定物件上的一個 long 值。 |
|
void |
setShort(Object obj,
short s)
將欄位的值設置為指定物件上的一個 short 值。 |
|
String |
toGenericString()
返回一個描述此 Field (包括其一般型別)的字元串。 |
|
String |
toString()
返回一個描述此 Field 的字元串。 |
從類別 java.lang.reflect.AccessibleObject 繼承的方法 |
---|
getAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible |
從類別 java.lang.Object 繼承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
方法詳細資訊 |
---|
public Class<?> getDeclaringClass()
Class
物件,該類別或介面宣告由此 Field
物件表示的欄位。
Member
中的 getDeclaringClass
public String getName()
Field
物件表示的欄位的名稱。
Member
中的 getName
public int getModifiers()
Field
物件表示的欄位的 Java 語言修飾符。應該使用 Modifier
類別對這些修飾符進行解碼。
Member
中的 getModifiers
Modifier
public boolean isEnumConstant()
public boolean isSynthetic()
Member
中的 isSynthetic
public Class<?> getType()
Class
物件,它標識了此 Field
物件所表示欄位的宣告型別。
Class
物件public Type getGenericType()
如果 Type 是一個參數化型別,則返回的 Type 物件必須準確地反映源程式碼中使用的實際型別參數。
如果底層欄位的型別是一個型別變數或者是一個參數化型別,則創建它。否則將解析它。
Field
物件所表示欄位的宣告型別的 Type 物件
GenericSignatureFormatError
- 如果一般欄位簽章不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式
TypeNotPresentException
- 如果底層欄位的一般型別簽章參考了不存在的型別宣告
MalformedParameterizedTypeException
- 如果底層欄位的一般簽章參考了一個因某種原因而無法實例化的參數化型別public boolean equals(Object obj)
Field
與指定物件比較。如果物件是相同的,則返回 true。如果由相同的類別宣告並且具有相同的名稱和型別,那麼這兩個 Field
物件是相同的。
Object
中的 equals
obj
- 要與之比較的參考物件。
true
;否則返回 false
。Object.hashCode()
,
Hashtable
public int hashCode()
Field
的雜湊碼。這作為底層欄位的宣告類別名及其名稱的雜湊碼的異或進行計算。
Object
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public String toString()
Field
的字元串。格式是:該欄位(如果存在的話)的存取修飾符,後面跟著欄位型別和一個空格,再後面是宣告該欄位的類別的完全限定名,後面跟著一個句點,最後是欄位的名稱。例如:
public static final int java.lang.Thread.MIN_PRIORITY private int java.io.FileDescriptor.fd
修飾符是按照 "The Java Language Specification" 中指定的規範化順序放置的。public、protected 或 private 的修飾符放在最前面,然後按以下順序放置其他修飾符:static、final、transient 和 volatile。
Object
中的 toString
public String toGenericString()
Field
(包括其一般型別)的字元串。格式是:該欄位(如果存在的話)的存取修飾符,後面跟著一般欄位型別和一個空格,再後面是宣告該欄位的類別的完全限定名,後面跟著一個句點,最後是欄位的名稱。
修飾符是按照 "The Java Language Specification" 中指定的規範化順序放置的。public、protected 或 private 的修飾符放在最前面,然後按以下順序放置其他修飾符:static、final、transient 和 volatile。
Field
(包括其一般型別)的字元串public Object get(Object obj) throws IllegalArgumentException, IllegalAccessException
Field
表示的欄位的值。如果該值是一個基本型別值,則自動將其包裹在一個物件中。
底層欄位的值是按以下方式獲得的:
如果底層欄位是一個靜態欄位,則忽略 obj
變數;它可能為 null。
否則,底層欄位是一個實例欄位。如果指定的 obj
變數為 null,則該方法將拋出一個 NullPointerException
。如果指定物件不是宣告底層欄位的類別或介面的實例,則該方法將拋出一個 IllegalArgumentException
。
如果此 Field
物件強制實施 Java 語言存取控制,並且底層欄位是不可存取的,則該方法將拋出一個 IllegalAccessException
。如果底層欄位是靜態的,並且宣告該欄位的類別尚未初始化,則初始化這個類別。
否則,從底層實例欄位或靜態欄位中獲取該值。如果該欄位是一個基本型別欄位,則在返回前將該值包裹在一個物件中,否則照原樣返回。
如果欄位隱藏在 obj
的型別中,則根據前面的規則獲得欄位的值。
obj
- 從中提取所表示欄位的值的物件
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。public boolean getBoolean(Object obj) throws IllegalArgumentException, IllegalAccessException
boolean
欄位的值。
obj
- 從中提取 boolean
值的物件
boolean
欄位的值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者無法通過擴展轉換將欄位值轉換為 boolean
型別。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。get(java.lang.Object)
public byte getByte(Object obj) throws IllegalArgumentException, IllegalAccessException
byte
欄位的值。
obj
- 從中提取 byte
值的物件
byte
欄位的值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者無法通過擴展轉換將欄位值轉換為 byte
型別。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。get(java.lang.Object)
public char getChar(Object obj) throws IllegalArgumentException, IllegalAccessException
char
型別或另一個通過擴展轉換可以轉換為 char
型別的基本型別的靜態或實例欄位的值。
obj
- 從中提取 char
值的物件
char
型別的欄位的值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者無法通過擴展轉換將欄位值轉換為 char
型別。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。get(java.lang.Object)
public short getShort(Object obj) throws IllegalArgumentException, IllegalAccessException
short
型別或另一個通過擴展轉換可以轉換為 short
型別的基本型別的靜態或實例欄位的值。
obj
- 從中提取 short
值的物件
short
型別的欄位的值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者無法通過擴展轉換將欄位值轉換為 short
型別。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。get(java.lang.Object)
public int getInt(Object obj) throws IllegalArgumentException, IllegalAccessException
int
型別或另一個通過擴展轉換可以轉換為 int
型別的基本型別的靜態或實例欄位的值。
obj
- 從中提取 int
值的物件
int
型別的欄位的值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者無法通過擴展轉換將欄位值轉換為 int
型別。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。get(java.lang.Object)
public long getLong(Object obj) throws IllegalArgumentException, IllegalAccessException
long
型別或另一個通過擴展轉換可以轉換為 long
型別的基本型別的靜態或實例欄位的值。
obj
- 從中提取 long
值的物件
long
型別的欄位的值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者無法通過擴展轉換將欄位值轉換為 long
型別。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。get(java.lang.Object)
public float getFloat(Object obj) throws IllegalArgumentException, IllegalAccessException
float
型別或另一個通過擴展轉換可以轉換為 float
型別的基本型別的靜態或實例欄位的值。
obj
- 從中提取 float
值的物件
float
型別的欄位的值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者無法通過擴展轉換將欄位值轉換為 float
型別。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。get(java.lang.Object)
public double getDouble(Object obj) throws IllegalArgumentException, IllegalAccessException
double
型別或另一個通過擴展轉換可以轉換為 double
型別的基本型別的靜態或實例欄位的值。
obj
- 從中提取 double
值的物件
double
型別的欄位的值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者無法通過擴展轉換將欄位值轉換為 double
型別。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。get(java.lang.Object)
public void set(Object obj, Object value) throws IllegalArgumentException, IllegalAccessException
Field
物件表示的欄位設置為指定的新值。如果底層欄位的型別為基本型別,則對新值進行自動解套件。
進行此操作的方式如下:
如果底層欄位是靜態欄位,則忽略 obj
變數;它可能為 null。
否則底層欄位是一個實例欄位。如果指定物件變數為 null,則該方法將拋出一個 NullPointerException
。如果指定物件變數不是宣告底層欄位的類別或介面的實例,則該方法將拋出一個 IllegalArgumentException
。
如果此 Field
物件實施 Java 語言存取控制,並且底層欄位是不可存取的,則該方法將拋出一個 IllegalAccessException
。
如果底層欄位為 final 欄位,則該方法將拋出一個 IllegalAccessException
,除非 setAccessible(true)
已經繼承該欄位並且該欄位是一個非靜態欄位。在通過程序的其他部分可以存取類別的實例之前,只有使用空白 final 欄位反序列化或重構類別的實例期間,以這種方式設置 final 欄位才有意義。在其他任何上下文中使用該方法都可能會有不可預知的結果,包括程序的其他部分繼續使用該欄位的原始值的情況。
如果底層欄位的型別為某一基本型別,則可以嘗試使用解包轉換將新值轉換為基本型別的值。如果該嘗試失敗,則此方法將拋出一個 IllegalArgumentException
。
如果在進行可能的解包之後,無法通過某一標識或擴展轉換將新值轉換為底層欄位的型別,則此方法將拋出一個 IllegalArgumentException
。
如果底層欄位是靜態的,並且宣告該欄位的類別尚未初始化,則初始化這個類別。
欄位被設置為可能已解包並擴大的新值。
如果欄位隱藏在 obj
的型別中,則根據前面的規則設置欄位的值。
obj
- 應該修改其欄位的物件value
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。public void setBoolean(Object obj, boolean z) throws IllegalArgumentException, IllegalAccessException
boolean
值。該方法等同於 set(obj, zObj)
,其中 zObj
是一個 Boolean
物件,並且 zObj.booleanValue() == z
。
obj
- 應該修改其欄位的物件z
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。set(java.lang.Object, java.lang.Object)
public void setByte(Object obj, byte b) throws IllegalArgumentException, IllegalAccessException
byte
值。該方法等同於 set(obj, bObj)
,其中 bObj
是一個 Byte
物件,並且 bObj.byteValue() == b
。
obj
- 應該修改其欄位的物件b
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。set(java.lang.Object, java.lang.Object)
public void setChar(Object obj, char c) throws IllegalArgumentException, IllegalAccessException
char
值。該方法等同於 set(obj, cObj)
,其中 cObj
是一個 Character
物件,並且 cObj.charValue() == c
。
obj
- 應該修改其欄位的物件c
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。set(java.lang.Object, java.lang.Object)
public void setShort(Object obj, short s) throws IllegalArgumentException, IllegalAccessException
short
值。該方法等同於 set(obj, sObj)
,其中 sObj
是一個 Short
物件,並且 sObj.shortValue() == s
。
obj
- 應該修改其欄位的物件s
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。set(java.lang.Object, java.lang.Object)
public void setInt(Object obj, int i) throws IllegalArgumentException, IllegalAccessException
int
值。該方法等同於 set(obj, iObj)
,其中 iObj
是一個 Integer
物件,並且 iObj.intValue() == i
。
obj
- 應該修改其欄位的物件i
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。set(java.lang.Object, java.lang.Object)
public void setLong(Object obj, long l) throws IllegalArgumentException, IllegalAccessException
long
值。該方法等同於 set(obj, lObj)
,其中 lObj
是一個 Long
物件,並且 lObj.longValue() == l
。
obj
- 應該修改其欄位的物件l
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。set(java.lang.Object, java.lang.Object)
public void setFloat(Object obj, float f) throws IllegalArgumentException, IllegalAccessException
float
值。該方法等同於 set(obj, fObj)
,其中 fObj
是一個 Float
物件,並且 fObj.floatValue() == f
。
obj
- 應該修改其欄位的物件f
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。set(java.lang.Object, java.lang.Object)
public void setDouble(Object obj, double d) throws IllegalArgumentException, IllegalAccessException
double
值。該方法等同於 set(obj, dObj)
,其中 dObj
是一個 Double
物件,並且 dObj.doubleValue() == d
。
obj
- 應該修改其欄位的物件d
- 正被修改的 obj
的欄位的新值
IllegalAccessException
- 如果底層欄位是不可存取的。
IllegalArgumentException
- 如果指定物件不是宣告底層欄位(或者其子類別或實作者)的類別或介面的實例,或者解包轉換失敗。
NullPointerException
- 如果指定物件為 null 並且欄位是一個實例欄位。
ExceptionInInitializerError
- 如果此方法引起的初始化失敗。set(java.lang.Object, java.lang.Object)
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
AnnotatedElement
複製的描述
AnnotatedElement
中的 getAnnotation
AccessibleObject
中的 getAnnotation
annotationClass
- 對應於註釋型別的 Class 物件
NullPointerException
- 如果給定的註釋類別為 nullpublic Annotation[] getDeclaredAnnotations()
AnnotatedElement
複製的描述
AnnotatedElement
中的 getDeclaredAnnotations
AccessibleObject
中的 getDeclaredAnnotations
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。