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

当需要解释类型、方法或构造函数的泛型签名信息的反射方法遇到语法上格式错误的签名属性时抛出。

广告