java.lang.reflect - 快速指南



java.lang.reflect - AccessibleObject 類

介紹

java.lang.reflect.AccessibleObject 類是 Field、Method 和 Constructor 物件的基類。它提供了一種功能,可以將反射物件標記為在使用時抑制預設的 Java 語言訪問控制檢查。當使用 Fields、Methods 或 Constructors 設定或獲取欄位、呼叫方法或建立和初始化類的新的例項時,會執行對公共、預設(包)訪問、受保護和私有成員的訪問檢查。在反射物件中設定 accessible 標誌允許具有足夠許可權的複雜應用程式(例如 Java 物件序列化或其他永續性機制)以通常禁止的方式操作物件。

類宣告

以下是java.lang.reflect.AccessibleObject類的宣告:

public class AccessibleObject
   extends Object
      implements AnnotatedElement

建構函式

序號 建構函式及描述
1 protected AccessibleObject()

建構函式:僅供 Java 虛擬機器使用。

類方法

序號 方法及描述
1 <T extends Annotation> T getAnnotation(Class<T> annotationClass)

如果存在此元素的指定型別的註釋,則返回該註釋;否則返回 null。

2 Annotation[] getAnnotations()

返回此元素上存在的所有註釋。

3 Annotation[] getDeclaredAnnotations()

返回直接存在於此元素上的所有註釋。

4 boolean isAccessible()

獲取此物件的 accessible 標誌的值。

5 boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)

如果此元素上存在指定型別的註釋,則返回 true;否則返回 false。

6 static void setAccessible(AccessibleObject[] array, boolean flag)

便利方法,用於透過單次安全檢查(為提高效率)設定物件的陣列的 accessible 標誌。

7 void setAccessible(boolean flag)

將此物件的 accessible 標誌設定為指示的布林值。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.Object

java.lang.reflect - Array 類

介紹

java.lang.reflect.Array 類提供靜態方法來動態建立和訪問 Java 陣列。Array 允許在 get 或 set 操作期間發生擴充套件轉換,但如果發生縮小轉換,則會丟擲 IllegalArgumentException。

類宣告

以下是java.lang.reflect.Array類的宣告:

public final class Array
   extends Object

類方法

序號 方法及描述
1 static Object get(Object array, int index)

返回指定陣列物件中索引元件的值。

2 static boolean getBoolean(Object array, int index)

返回指定陣列物件中索引元件的值,作為布林值。

3 static byte getByte(Object array, int index)

返回指定陣列物件中索引元件的值,作為位元組。

4 static char getChar(Object array, int index)

返回指定陣列物件中索引元件的值,作為字元。

5 static double getDouble(Object array, int index)

返回指定陣列物件中索引元件的值,作為雙精度浮點數。

6 static float getFloat(Object array, int index)

返回指定陣列物件中索引元件的值,作為單精度浮點數。

7 static int getInt(Object array, int index)

返回指定陣列物件中索引元件的值,作為整數。

8 static int getLength(Object array)

返回指定陣列物件的長度,作為整數。

9 static long getLong(Object array, int index)

返回指定陣列物件中索引元件的值,作為長整數。

10 static short getShort(Object array, int index)

返回指定陣列物件中索引元件的值,作為短整數。

11 static Object newInstance(Class<?> componentType, int... dimensions)

使用指定的元件型別和維度建立一個新的陣列。

12 static Object newInstance(Class<?> componentType, int length)

使用指定的元件型別和長度建立一個新的陣列。

13 static void set(Object array, int index, Object value)

將指定陣列物件的索引元件的值設定為指定的新值。

14 static void setBoolean(Object array, int index, boolean z)

將指定陣列物件的索引元件的值設定為指定的布林值。

15 static void setByte(Object array, int index, byte b)

將指定陣列物件的索引元件的值設定為指定的位元組值。

16 static void setChar(Object array, int index, char c)

將指定陣列物件的索引元件的值設定為指定的字元值。

17 static void setDouble(Object array, int index, double d)

將指定陣列物件的索引元件的值設定為指定的雙精度浮點值。

18 static void setFloat(Object array, int index, float f)

將指定陣列物件的索引元件的值設定為指定的單精度浮點值。

19 static void setInt(Object array, int index, int i)

將指定陣列物件的索引元件的值設定為指定的整數值。

20 static void setLong(Object array, int index, long l)

將指定陣列物件的索引元件的值設定為指定的長整數值。

21 static void setShort(Object array, int index, short s)

將指定陣列物件的索引元件的值設定為指定的短整數值。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.Object

java.lang.reflect - Constructor<T> 類

介紹

java.lang.reflect.Constructor 類提供有關類的單個建構函式的資訊以及對它的訪問。Constructor 允許在將實際引數與基礎建構函式的形式引數匹配到 newInstance() 時發生擴充套件轉換,但如果發生縮小轉換,則會丟擲 IllegalArgumentException。

類宣告

以下是java.lang.reflect.Constructor類的宣告:

public final class Constructor<T>
   extends AccessibleObject
      implements GenericDeclaration, Member

類方法

序號 方法及描述
1 boolean equals(Object obj)

將此 Constructor 與指定的 Object 進行比較。

2 <T extends Annotation> T getAnnotation(Class<T> annotationClass)

如果存在此元素的指定型別的註釋,則返回該註釋;否則返回 null。

3 Annotation[] getDeclaredAnnotations()

返回直接存在於此元素上的所有註釋。

4 Class<T> getDeclaringClass()

返回表示宣告此 Constructor 物件所表示的建構函式的類的 Class 物件。

5 Class<?>[] getExceptionTypes()

返回一個 Class 物件陣列,這些物件表示此 Constructor 物件所表示的基礎建構函式宣告丟擲的異常的型別。

6 Type[] getGenericExceptionTypes()

返回一個 Type 物件陣列,這些物件表示此 Constructor 物件宣告丟擲的異常。

7 Type[] getGenericParameterTypes()

返回一個 Type 物件陣列,這些物件表示此 Constructor 物件所表示的方法的正式引數型別(按宣告順序)。

8 int getModifiers()

返回此 Constructor 物件所表示的建構函式的 Java 語言修飾符,作為整數。

9 String getName()

返回此建構函式的名稱,作為字串。

10 Annotation[][] getParameterAnnotations()

返回一個數組陣列,這些陣列表示此 Constructor 物件所表示的方法的正式引數上的註釋(按宣告順序)。

11 Class<?>[] getParameterTypes()

返回一個 Class 物件陣列,這些物件表示此 Constructor 物件所表示的建構函式的正式引數型別(按宣告順序)。

12 int hashCode()

返回此 Constructor 的雜湊碼。

13 boolean isSynthetic()

如果此建構函式是合成建構函式,則返回 true;否則返回 false。

14 boolean isVarArgs()

如果此建構函式宣告為採用可變數量的引數,則返回 true;否則返回 false。

15 T newInstance(Object... initargs)

使用此 Constructor 物件所表示的建構函式建立並初始化建構函式的宣告類的新的例項,並使用指定的初始化引數。

16 String toGenericString()

返回描述此 Constructor 的字串,包括型別引數。

17 String toString()

返回描述此 Constructor 的字串。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.reflect.AccessibleObject
  • java.lang.Object

java.lang.reflect - Field 類

介紹

java.lang.reflect.Field 類提供有關類或介面的單個欄位的資訊以及對其的動態訪問。反射欄位可以是類(靜態)欄位或例項欄位。Field 允許在 get 或 set 訪問操作期間發生擴充套件轉換,但如果發生縮小轉換,則會丟擲 IllegalArgumentException。

類宣告

以下是java.lang.reflect.Field類的宣告:

public final class Field
   extends AccessibleObject
      implements Member

類方法

序號 方法及描述
1 boolean equals(Object obj)

比較此 Field 與指定的 Object。

2 Object get(Object obj)

返回指定物件上由此 Field 表示的欄位的值。

3 <T extends Annotation> T getAnnotation(Class<T> annotationClass)

如果存在此元素的指定型別的註釋,則返回該註釋;否則返回 null。

4 boolean getBoolean(Object obj)

獲取靜態或例項布林欄位的值。

5 byte getByte(Object obj)

獲取靜態或例項位元組欄位的值。

6 char getChar(Object obj)

獲取型別為 char 或可透過擴充套件轉換轉換為型別 char 的其他基元型別的靜態或例項欄位的值。

7 Annotation[] getDeclaredAnnotations()

返回直接存在於此元素上的所有註釋。

8 Class<?> getDeclaringClass()

返回表示宣告此 Field 物件所表示的欄位的類或介面的 Class 物件。

9 double getDouble(Object obj)

獲取型別為 double 或可透過擴充套件轉換轉換為型別 double 的其他基元型別的靜態或例項欄位的值。

10 float getFloat(Object obj)

獲取型別為 float 或可透過擴充套件轉換轉換為型別 float 的其他基元型別的靜態或例項欄位的值。

11 Type getGenericType()

返回一個 Type 物件,該物件表示此 Field 物件所表示的欄位的宣告型別。

12 int getInt(Object obj)

獲取型別為 int 或可透過擴充套件轉換轉換為型別 int 的其他基元型別的靜態或例項欄位的值。

13 long getLong(Object obj)

獲取型別為 long 或可透過擴充套件轉換轉換為型別 long 的其他基元型別的靜態或例項欄位的值。

14 int getModifiers()

返回此 Field 物件所表示的欄位的 Java 語言修飾符,作為整數。

15 String getName()

返回此 Field 物件所表示的欄位的名稱。

16 short getShort(Object obj)

獲取型別為 short 或可透過擴充套件轉換轉換為型別 short 的其他基元型別的靜態或例項欄位的值。

17 Class<?> getType()

返回一個 Class 物件,該物件標識此 Field 物件所表示的欄位的宣告型別。

18 int hashCode()

返回此 Field 的雜湊碼。

19 boolean isEnumConstant()

如果此欄位表示列舉型別的元素,則返回 true;否則返回 false。

20 boolean isSynthetic()

如果當前物件所表示的欄位是合成的,則此方法返回 true;否則返回 false。

21 void setBoolean(Object obj, boolean z)

將欄位的值設定為指定物件的布林值。

22 void setByte(Object obj, byte b)

在指定物件上將欄位的值設定為位元組。

23 void setChar(Object obj, char c)

在指定物件上將欄位的值設定為字元。

24 void setDouble(Object obj, double d)

在指定物件上將欄位的值設定為雙精度浮點數。

25 void setFloat(Object obj, float f)

在指定物件上將欄位的值設定為單精度浮點數。

26 void setInt(Object obj, int i)

在指定物件上將欄位的值設定為整數。

27 void setLong(Object obj, long l)

在指定物件上將欄位的值設定為長整數。

28 void setShort(Object obj, short s)

在指定物件上將欄位的值設定為短整數。

29 String toGenericString()

返回一個字串,描述此欄位,包括其泛型型別。

30 String toString()

返回一個字串,描述此欄位。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.reflect.AccessibleObject
  • java.lang.Object

java.lang.reflect - Method 類

介紹

java.lang.reflect.Method 類提供有關類或介面上的單個方法的資訊和訪問許可權。反射方法可以是類方法或例項方法(包括抽象方法)。在將實際引數與底層方法的形式引數進行匹配時,Method 允許發生擴充套件轉換,但如果發生縮小轉換,則會丟擲 IllegalArgumentException。

類宣告

以下是 java.lang.reflect.Method 類的宣告:

public final class Method<T>
   extends AccessibleObject
      implements GenericDeclaration, Member

類方法

序號 方法及描述
1 boolean equals(Object obj)

將此 Method 與指定物件進行比較。

2 <T extends Annotation> T getAnnotation(Class<T> annotationClass)

如果存在此元素的指定型別的註釋,則返回該註釋;否則返回 null。

3 Annotation[] getDeclaredAnnotations()

返回直接存在於此元素上的所有註釋。

4 Class<T> getDeclaringClass()

返回表示宣告此 Method 物件所表示的方法的類的 Class 物件。

5 Object getDefaultValue()

返回此 Method 例項所表示的註解成員的預設值。

6 Class<?>[] getExceptionTypes()

返回一個 Class 物件陣列,這些物件表示此 Constructor 物件所表示的基礎建構函式宣告丟擲的異常的型別。

7 Type[] getGenericExceptionTypes()

返回一個 Type 物件陣列,這些物件表示此 Constructor 物件宣告丟擲的異常。

8 Type[] getGenericParameterTypes()

返回一個 Type 物件陣列,這些物件表示此 Constructor 物件所表示的方法的正式引數型別(按宣告順序)。

9 Type getGenericReturnType()

返回一個 Type 物件,該物件表示此 Method 物件所表示的方法的形式返回型別。

10 int getModifiers()

返回此 Method 物件所表示的方法的 Java 語言修飾符(作為整數)。

11 String getName()

返回此方法的名稱(作為字串)。

12 Annotation[][] getParameterAnnotations()

返回一個數組陣列,這些陣列表示此 Method 物件所表示的方法的形式引數上的註解(按宣告順序)。

13 Class<?>[] getParameterTypes()

返回一個 Class 物件陣列,這些物件表示此 Method 物件所表示的建構函式的形式引數型別(按宣告順序)。

14 Class<?> getReturnType()

返回一個 Class 物件,該物件表示此 Method 物件所表示的方法的形式返回型別。

15 int hashCode()

返回此 Constructor 的雜湊碼。

16 Object invoke(Object obj, Object... args)

在指定物件上使用指定的引數呼叫此 Method 物件所表示的底層方法。

17 boolean isBridge()

如果此方法是橋接方法,則返回 true;否則返回 false。

18 boolean isSynthetic()

如果此方法是合成方法,則返回 true;否則返回 false。

19 boolean isVarArgs()

如果此方法宣告為採用可變數量的引數,則返回 true;否則返回 false。

20 String toGenericString()

返回一個字串,描述此 Method,包括型別引數。

21 String toString()

返回一個字串,描述此 Method。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.reflect.AccessibleObject
  • java.lang.Object

java.lang.reflect - Modifier 類

介紹

java.lang.reflect.Modifier 類提供靜態方法和常量來解碼類和成員訪問修飾符。修飾符集表示為整數,其中不同的位位置表示不同的修飾符。《Java虛擬機器規範》第 4.1、4.4、4.5 和 4.7 節的表格中給出了表示修飾符的常量的值。

類宣告

以下是 java.lang.reflect.Modifier 類的宣告:

public class Modifier
   extends Object

欄位

以下是 java.lang.reflect.Modifier 類的欄位:

  • static int ABSTRACT - 表示 abstract 修飾符的 int 值。

  • static int FINAL - 表示 final 修飾符的 int 值。

  • static int INTERFACE - 表示 interface 修飾符的 int 值。

  • static int NATIVE - 表示 native 修飾符的 int 值。

  • static int PRIVATE - 表示 private 修飾符的 int 值。

  • static int PROTECTED - 表示 protected 修飾符的 int 值。

  • static int PUBLIC - 表示 public 修飾符的 int 值。

  • static int STATIC - 表示 static 修飾符的 int 值。

  • static int STRICT - 表示 strictfp 修飾符的 int 值。

  • static int SYNCHRONIZED - 表示 synchronized 修飾符的 int 值。

  • static int TRANSIENT - 表示 transient 修飾符的 int 值。

  • static int VOLATILE - 表示 volatile 修飾符的 int 值。

建構函式

序號 建構函式及描述
1 Modifier()

預設建構函式。

類方法

序號 方法及描述
1 static int classModifiers()

返回一個 int 值,該值將可以應用於類的源語言修飾符進行 OR 運算。

2 static int constructorModifiers()

返回一個 int 值,該值將可以應用於建構函式的源語言修飾符進行 OR 運算。

3 static int fieldModifiers()

返回一個 int 值,該值將可以應用於欄位的源語言修飾符進行 OR 運算。

4 static int interfaceModifiers()

返回一個 int 值,該值將可以應用於介面的源語言修飾符進行 OR 運算。

5 static boolean isAbstract(int mod)

如果整數引數包含 abstract 修飾符,則返回 true,否則返回 false。

6 static boolean isFinal(int mod)

如果整數引數包含 final 修飾符,則返回 true,否則返回 false。

7 static boolean isInterface(int mod)

如果整數引數包含 interface 修飾符,則返回 true,否則返回 false。

8 static boolean isNative(int mod)

如果整數引數包含 native 修飾符,則返回 true,否則返回 false。

9 static boolean isPrivate(int mod)

如果整數引數包含 private 修飾符,則返回 true,否則返回 false。

10 static boolean isProtected(int mod)

如果整數引數包含 protected 修飾符,則返回 true,否則返回 false。

11 static boolean isPublic(int mod)

如果整數引數包含 public 修飾符,則返回 true,否則返回 false。

12 static boolean isStatic(int mod)

如果整數引數包含 static 修飾符,則返回 true,否則返回 false。

13 static boolean isStrict(int mod)

如果整數引數包含 strictfp 修飾符,則返回 true,否則返回 false。

14 static boolean isSynchronized(int mod)

如果整數引數包含 synchronized 修飾符,則返回 true,否則返回 false。

15 static boolean isTransient(int mod)

如果整數引數包含 transient 修飾符,則返回 true,否則返回 false。

16 static boolean isVolatile(int mod)

如果整數引數包含 volatile 修飾符,則返回 true,否則返回 false。

17 static int methodModifiers()

返回一個 int 值,該值將可以應用於方法的源語言修飾符進行 OR 運算。

18 static String toString(int mod)

返回一個字串,描述指定修飾符中的訪問修飾符標誌。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.Object

java.lang.reflect - Proxy 類

介紹

java.lang.reflect.Proxy 類提供用於建立動態代理類和例項的靜態方法,它也是所有由這些方法建立的動態代理類的超類。

類宣告

以下是 java.lang.reflect.Proxy 類的宣告:

public class Proxy
   extends Object
      implements Serializable

欄位

以下是 java.lang.reflect.Proxy 類的欄位:

  • protected InvocationHandler h - 此代理例項的呼叫處理程式。

建構函式

序號 建構函式及描述
1 protected Proxy(InvocationHandler h)

使用其呼叫處理程式的指定值從子類(通常是動態代理類)構造新的 Proxy 例項。

類方法

序號 方法及描述
1 static InvocationHandler getInvocationHandler(Object proxy)

返回指定代理例項的呼叫處理程式。

2 static Class<?> getProxyClass(ClassLoader loader, Class<?>... interfaces)

給定類載入器和介面陣列,返回代理類的 java.lang.Class 物件。

3 static boolean isProxyClass(Class<?> cl)

當且僅當使用 getProxyClass 方法或 newProxyInstance 方法動態生成指定類作為代理類時,返回 true。

4 static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)

返回指定介面的代理類的例項,該例項將方法呼叫分派給指定的呼叫處理程式。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.Object

java.lang.reflect - 介面

介紹

java.lang.reflect 介面包含用於獲取有關類和物件的反射資訊的介面。

介面摘要

序號 介面和說明
1

AnnotatedElement

表示當前在此 VM 中執行的程式的已註釋元素。

2

GenericArrayType

GenericArrayType 表示其元件型別是引數化型別或型別變數的陣列型別。

3

GenericDeclaration

宣告型別變數的所有實體的公共介面。

4

InvocationHandler

InvocationHandler 是代理例項的呼叫處理程式實現的介面。

5

Member

Member 是一個介面,它反映有關單個成員(欄位或方法)或建構函式的標識資訊。

6

ParameterizedType

ParameterizedType 表示引數化型別,例如 Collection<String>。

7

Type

Type 是 Java 程式語言中所有型別的公共超介面。

8

List<E>

這是一個有序集合(也稱為序列)。

9

TypeVariable<D extends GenericDeclaration>

TypeVariable 是各種型別的型別變數的公共超介面。

10

WildcardType

WildcardType 表示萬用字元型別表示式,例如 ?, ? extends Number 或 ? super Integer。

java.lang.reflect - 異常

介紹

java.lang.reflect 異常包含在反射操作期間可能發生的異常。

異常摘要

序號 異常和說明
1

InvocationTargetException

InvocationTargetException 是一個已檢查的異常,它包裝由呼叫的方法或建構函式丟擲的異常。

2

MalformedParameterizedTypeException

當需要例項化它的反射方法遇到語義上格式錯誤的引數化型別時丟擲。

3

UndeclaredThrowableException

如果其呼叫處理程式的 invoke 方法丟擲已檢查異常(不可分配給 RuntimeException 或 Error 的 Throwable),並且不可分配給在代理例項上呼叫的方法的 throws 子句中宣告的任何異常型別,則由代理例項上的方法呼叫丟擲,並分派給呼叫處理程式。

java.lang.reflect - 錯誤

介紹

java.lang.reflect 錯誤包含在反射操作期間可能發生的錯誤。

錯誤摘要

序號 錯誤和說明
1

GenericSignatureFormatError

當需要解釋型別、方法或建構函式的泛型簽名信息的反射方法遇到語法上格式錯誤的簽名屬性時丟擲。

廣告
© . All rights reserved.