java.lang.reflect - 快速指南

java.lang.reflect - AccessibleObject 类

简介

java.lang.reflect.AccessibleObject 类是 Field、Method 和 Constructor 对象的基类。它提供了在使用时标记反射对象为抑制默认 Java 语言访问控制检查的功能。当使用 Fields、Methods 或 Constructor 分别设置或获取字段、调用方法或创建和初始化类的新实例时,将执行对公共、默认(包)访问、受保护和私有成员的访问检查。在反射对象中设置可访问标志允许具有足够权限的复杂应用程序(例如 Java 对象序列化或其他持久性机制)以通常被禁止的方式操作对象。

类声明

以下是 java.lang.reflect.AccessibleObject 类的声明 −

public class AccessibleObject
   extends Object
      implements AnnotatedElement

构造函数

Sr.No. 构造函数和说明
1 protected AccessibleObject()

构造函数:仅由 Java 虚拟机使用。

类方法

Sr.No. 方法和描述
1 <T extends Annotation> T getAnnotation(Class<T> commentClass)

如果存在指定类型的注释,则返回此元素的注释,否则返回 null。

2 Annotation[] getAnnotations()

返回此元素上存在的所有注释。

3 Annotation[] getDeclaredAnnotations()

返回此元素上直接存在的所有注释。

4 boolean isAccessible()

获取此对象的可访问标志的值。

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

如果此元素上存在指定类型的注释,则返回 true,否则返回 false。

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

通过一次安全检查(为了提高效率)为对象数组设置可访问标志的便捷方法。

7 void setAccessible(boolean flag)

将此对象的可访问标志设置为指示的布尔值。

继承的方法

此类从以下类继承方法 −

  • java.lang.Object

java.lang.reflect - Array 类

简介

java.lang.reflect.Array 类提供静态方法来动态创建和访问 Java 数组。 Array 允许在获取或设置操作期间发生扩展转换,但如果发生缩小转换,则会抛出 IllegalArgumentException。

类声明

以下是 java.lang.reflect.Array 类的声明 −

public final class Array
    extends Object

类方法

Sr.No. 方法 &描述
1 静态 Object get(Object array, int index)

返回指定数组对象中索引组件的值。

2 静态 boolean getBoolean(Object array, int index)

以布尔值形式返回指定数组对象中索引组件的值。

3 静态 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)

以 int 形式返回指定数组对象中索引组件的值。

8 static int getLength(Object array)

返回指定的数组对象,作为 int。

9 static long getLong(Object array, int index)

以 long 形式返回指定数组对象中索引组件的值。

10 static short getShort(Object array, int index)

以 short 形式返回指定数组对象中索引组件的值。

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)

将指定数组对象的索引组件的值设置为指定的 int 值。

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

将指定数组对象的索引组件的值设置为指定的 long 值。

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

将指定数组对象的索引组件的值设置为指定的短值。

继承的方法

此类从以下类继承方法 −

  • java.lang.Object

java.lang.reflect - Constructor<T> 类

简介

java.lang.reflect.Constructor 类提供有关类的单个构造函数的信息和访问。当将 newInstance() 的实际参数与底层构造函数的形式参数匹配时,构造函数允许发生扩展转换,但如果发生缩小转换,则会抛出 IllegalArgumentException。

类声明

以下是 java.lang.reflect.Constructor 类的声明 −

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

类方法

Sr.No. 方法和说明
1 boolean equals(Object obj)

将此构造函数与指定对象进行比较。

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

如果存在指定类型的注释,则返回此元素的注释,否则返回 null。

3 Annotation[] getDeclaredAnnotations()

返回此元素上直接存在的所有注释。

4 Class<T> getDeclaringClass()

返回表示声明此 Constructor 对象所表示的构造函数的类的 Class 对象。

5 Class<?>[] getExceptionTypes()

返回表示此 Constructor 对象所表示的底层构造函数声明抛出的异常类型的 Class 对象数组。

6 Type[] getGenericExceptionTypes()

返回表示此 Constructor 声明抛出的异常的 Type 对象数组对象。

7 Type[] getGenericParameterTypes()

按声明顺序返回表示此 Constructor 对象所表示方法的形式参数类型的 Type 对象数组。

8 int getModifiers()

以整数形式返回此 Constructor 对象所表示的构造函数的 Java 语言修饰符。

9 String getName()

以字符串形式返回此构造函数的名称。

10 Annotation[][] getParameterAnnotations()

按声明顺序返回表示此 Constructor 对象所表示方法的形式参数上的注释的数组数组。

11 Class<?>[] getParameterTypes()

返回表示按声明顺序,此构造函数对象所表示的构造函数的形式参数类型。

12 int hashCode()

返回此构造函数的哈希码。

13 boolean isSynthetic()

如果此构造函数是合成构造函数,则返回 true;否则返回 false。

14 boolean isVarArgs()

如果此构造函数被声明为采用可变数量的参数,则返回 true;否则返回 false。

15 T newInstance(Object... initargs)

使用此 Constructor 对象表示的构造函数,使用指定的初始化参数创建并初始化构造函数声明类的新实例。

16 String toGenericString()

返回描述此 Constructor 的字符串,包括类型参数。

17 String toString()

返回描述此构造函数的字符串。

继承的方法

此类从以下类继承方法 −

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

java.lang.reflect - Field 类

简介

java.lang.reflect.Field 类提供有关类或接口的单个​​字段的信息和动态访问。反射字段可以是类(静态)字段或实例字段。Field 允许在获取或设置访问操作期间发生扩展转换,但如果发生缩小转换,则会引发 IllegalArgumentException。

类声明

以下是 java.lang.reflect.Field 类的声明 −

public final class Field
   extends AccessibleObject
      implements Member

类方法

Sr.No. 方法 &描述
1 boolean equals(Object obj)

将此字段与指定对象进行比较。

2 Object get(Object obj)

返回此字段在指定对象上表示的字段的值。

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

如果存在指定类型的注释,则返回此元素的注释,否则返回 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()

R返回此 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)

将字段的值设置为指定对象上的 int 数。

27 void setLong(Object obj, long l)

将字段的值设置为指定对象上的 long 数。指定对象。

28 void setShort(Object obj, short s)

将字段的值设置为指定对象上的短整型。

29 String toGenericString()

返回描述此字段的字符串,包括其泛型类型。

30 String toString()

返回字符串描述此字段。

继承的方法

此类从以下类继承方法 −

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

java.lang.reflect - 方法类

简介

java.lang.reflect.Method 类提供有关类或接口上单个方法的信息和访问方法。反射方法可以是类方法或实例方法(包括抽象方法)。当将要调用的实际参数与底层方法的形式参数匹配时,方法允许发生扩展转换,但如果发生缩小转换,则会抛出 IllegalArgumentException。

类声明

以下是 java.lang.reflect.Method 类的声明 −

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

类方法

Sr.No. 方法和说明
1 boolean equals(Object obj)

将此方法与指定对象进行比较。

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

如果存在指定类型的注释,则返回此元素的注释,否则返回 null。

3 Annotation[] getDeclaredAnnotations()

返回此元素上直接存在的所有注释。

4 Class<T> getDeclaringClass()

返回表示声明此 Method 对象所表示的方法的类的 Class 对象。

5 Object getDefaultValue()

返回此 Method 实例所表示的注释成员的默认值。

6 Class<?>[] getExceptionTypes()

返回表示此 Constructor 对象所表示的底层构造函数声明抛出的异常类型的 Class 对象数组。

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 Objectinvoke(Object obj, Object... args)

使用指定的参数在指定的对象上调用此 Method 对象所表示的底层方法。

17 boolean isBridge()

如果此方法是桥接方法,则返回 true;否则返回 false。

18 boolean isSynthetic()

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

19 boolean isVarArgs()

如果此方法声明为采用可变数量的参数,则返回 true;否则返回 false。

20 String toGenericString()

返回描述此方法的字符串,包括类型参数。

21 String toString()

返回描述此方法的字符串。

继承的方法

此类从以下类继承方法 −

  • 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 − 表示抽象修饰符的 int 值。

  • static int FINAL −表示最终修饰符的 int 值。

  • static int INTERFACE − 表示接口修饰符的 int 值。

  • static int NATIVE − 表示本机修饰符的 int 值。

  • static int PRIVATE − 表示私有修饰符的 int 值。

  • static int PROTECTED − 表示受保护修饰符的 int 值。

  • static int PUBLIC − 表示公共修饰符的 int 值。

  • static int STATIC −表示 static 修饰符的 int 值。

  • static int STRICT − 表示 strictfp 修饰符的 int 值。

  • static int SYNCHRONIZED − 表示 synchronized 修饰符的 int 值。

  • static int TRANSIENT − 表示 temporary 修饰符的 int 值。

  • static int VOLATILE − 表示 volatile 修饰符的 int 值。

构造函数

Sr.No. 构造函数和说明
1 Modifier()

默认构造函数。

类方法

Sr.No. 方法和描述
1 static int classModifiers()

返回一个 int 值,将可以应用于类的源语言修饰符进行 OR 运算。

2 static int constructionModifiers()

返回一个 int 值,将可以应用于构造函数的源语言修饰符进行 OR 运算。

3 static int fieldModifiers()

返回一个 int 值,将可以应用于字段的源语言修饰符进行 OR 运算。

4 static int interfaceModifiers()

返回一个 int 值,将可以应用于接口的源语言修饰符进行 OR 运算。

5 static boolean isAbstract(int mod)

如果整数参数包含抽象修饰符,则返回 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否则返回 true。

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 − 此代理实例的调用处理程序。

构造函数

Sr.No. 构造函数 &描述
1 protected Proxy(InvocationHandler h)

使用指定的调用处理程序值从子类(通常是动态代理类)构造一个新的 Proxy 实例。

类方法

Sr.No. 方法 &描述
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 接口包含用于获取有关类和对象的反射信息的接口。

接口摘要

Sr.No. 接口 &描述
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 异常包含反射操作期间可能发生的异常。

异常摘要

Sr.No. 异常 &描述
1

InvocationTargetException

InvocationTargetException 是一个已检查的异常,它包装了由调用的方法或构造函数抛出的异常。

2

MalformedParameterizedTypeException

当需要实例化的反射方法遇到语义格式错误的参数化类型时抛出。

3

UndeclaredThrowableException

如果代理实例的调用处理程序的invoke方法抛出已检查的异常(无法分配给的Throwable),则由代理实例上的方法调用抛出RuntimeException 或 Error),该异常不能分配给在代理实例上调用并分派到调用处理程序的方法的 throws 子句中声明的任何异常类型。

java.lang.reflect - 错误

简介

java.lang.reflect 错误包含反射操作期间可能发生的错误。

错误摘要

Sr.No. 错误和说明
1

GenericSignatureFormatError

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