java.lang.reflect - 快速指南


java.lang.reflect - AccessibleObject 类

介绍

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

类声明

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

public class AccessibleObject
   extends Object
      implements AnnotatedElement

构造函数

先生。 构造函数及描述
1 受保护的 AccessibleObject()

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

类方法

先生。 方法及说明
1 <T 扩展 Annotation> T getAnnotation(Class<T> 注释类)

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

2 注释[] getAnnotations()

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

3 注释[] getDeclaredAnnotations()

返回直接出现在该元素上的所有注释。

4 布尔值 isAccessible()

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

5 boolean isAnnotationPresent(Class<?extendsAnnotation>annotationClass)

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

6 static void setAccessible(AccessibleObject[] 数组,布尔标志)

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

7 void setAccessible(布尔标志)

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

继承的方法

该类继承了以下类的方法 -

  • java.lang.Object

java.lang.reflect - 数组类

介绍

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

类声明

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

public final class Array
   extends Object

类方法

先生。 方法及说明
1 静态对象获取(对象数组,int索引)

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

2 static boolean getBoolean(对象数组,int索引)

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

3 静态字节 getByte(对象数组,int 索引)

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

4 static char getChar(对象数组,int索引)

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

5 static double getDouble(对象数组,int索引)

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

6 static float getFloat(对象数组,int索引)

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

7 static int getInt(对象数组,int索引)

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

8 static int getLength(对象数组)

以 int 形式返回指定数组对象的长度。

9 static long getLong(对象数组,int索引)

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

10 static Short getShort(对象数组,int索引)

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

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

创建具有指定组件类型和维度的新数组。

12 静态对象 newInstance(Class<?> componentType, int length)

创建具有指定组件类型和长度的新数组。

13 static void set(对象数组,int索引,对象值)

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

14 static void setBoolean(对象数组,int索引,布尔值z)

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

15 static void setByte(对象数组,int索引,字节b)

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

16 static void setChar(对象数组,int索引,char c)

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

17 号 static void setDouble(对象数组,int索引,double d)

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

18 static void setFloat(对象数组,int索引,float f)

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

19 static void setInt(对象数组,int索引,int i)

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

20 static void setLong(对象数组,int索引,long l)

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

21 static void setShort(对象数组,int索引,short s)

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

继承的方法

该类继承了以下类的方法 -

  • java.lang.Object

java.lang.reflect - 构造函数<T>类

介绍

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

类声明

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

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

类方法

先生。 方法及说明
1 布尔等于(对象 obj)

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

2 <T 扩展 Annotation> T getAnnotation(Class<T> 注释类)

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

3 注释[] getDeclaredAnnotations()

返回直接出现在该元素上的所有注释。

4 类<T> getDeclaringClass()

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

5 类<?>[] getExceptionTypes()

返回 Class 对象的数组,这些对象表示声明为此 Constructor 对象表示的基础构造函数抛出的异常类型。

6 类型[] getGenericExceptionTypes()

返回 Type 对象的数组,这些对象表示声明为此 Constructor 对象引发的异常。

7 类型[] getGenericParameterTypes()

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

8 int getModifiers()

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

9 字符串 getName()

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

10 注释[][] getParameterAnnotations()

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

11 类<?>[] getParameterTypes()

返回一个 Class 对象数组,这些对象按声明顺序表示由此 Constructor 对象表示的构造函数的形式参数类型。

12 int 哈希码()

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

13 布尔 isSynthetic()

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

14 布尔 isVarArgs()

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

15 T newInstance(对象... initargs)

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

16 字符串到通用字符串()

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

17 号 字符串转字符串()

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

继承的方法

该类继承了以下类的方法 -

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

java.lang.reflect - 字段类

介绍

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

类声明

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

public final class Field
   extends AccessibleObject
      implements Member

类方法

先生。 方法及说明
1 布尔等于(对象 obj)

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

2 对象获取(对象 obj)

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

3 <T 扩展 Annotation> T getAnnotation(Class<T> 注释类)

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

4 布尔 getBoolean(对象 obj)

获取静态或实例布尔字段的值。

5 字节 getByte(对象 obj)

获取静态或实例字节字段的值。

6 char getChar(对象 obj)

获取 char 类型或可通过扩展转换转换为 char 类型的其他基本类型的静态或实例字段的值。

7 注释[] getDeclaredAnnotations()

返回直接出现在该元素上的所有注释。

8 类<?> getDeclaringClass()

返回表示声明此 Field 对象表示的字段的类或接口的 Class 对象。

9 双 getDouble(对象 obj)

获取 double 类型或可通过扩展转换转换为 double 类型的其他基本类型的静态或实例字段的值。

10 float getFloat(对象 obj)

获取 float 类型或可通过扩展转换转换为 float 类型的其他基本类型的静态或实例字段的值。

11 类型 getGenericType()

返回一个 Type 对象,该对象表示此 Field 对象表示的字段的声明类型。

12 int getInt(对象 obj)

获取 int 类型或可通过扩展转换转换为 int 类型的其他基本类型的静态或实例字段的值。

13 长 getLong(对象 obj)

获取 long 类型或可通过扩展转换转换为 long 类型的其他基本类型的静态或实例字段的值。

14 int getModifiers()

以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符。

15 字符串 getName()

R返回由此 Field 对象表示的字段的名称。

16 短 getShort(对象 obj)

获取 Short 类型或可通过扩展转换转换为 Short 类型的其他基本类型的静态或实例字段的值。

17 号 类<?> getType()

返回一个 Class 对象,该对象标识由此 Field 对象表示的字段的声明类型。

18 int 哈希码()

返回该字段的哈希码。

19 布尔 isEnumConstant()

如果该字段表示枚举类型的元素,则返回 true;否则返回 false。

20 布尔 isSynthetic()

如果当前对象表示的字段是合成的,则此方法返回 true,否则返回 false。

21 void setBoolean(对象 obj, 布尔值 z)

将指定对象的字段值设置为布尔值。

22 void setByte(对象 obj, 字节 b)

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

23 void setChar(对象 obj, char c)

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

24 void setDouble(对象 obj, 双 d)

将指定对象上的字段值设置为双精度值。

25 void setFloat(对象 obj, 浮点 f)

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

26 void setInt(对象 obj, int i)

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

27 void setLong(对象 obj, 长 l)

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

28 void setShort(对象 obj, 短 s)

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

29 字符串到通用字符串()

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

30 字符串转字符串()

返回描述该字段的字符串。

继承的方法

该类继承了以下类的方法 -

  • 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

类方法

先生。 方法及说明
1 布尔等于(对象 obj)

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

2 <T 扩展 Annotation> T getAnnotation(Class<T> 注释类)

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

3 注释[] getDeclaredAnnotations()

返回直接出现在该元素上的所有注释。

4 类<T> getDeclaringClass()

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

5 对象 getDefaultValue()

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

6 类<?>[] getExceptionTypes()

返回 Class 对象的数组,这些对象表示声明为此 Constructor 对象表示的基础构造函数抛出的异常类型。

7 类型[] getGenericExceptionTypes()

返回 Type 对象的数组,这些对象表示声明为此 Constructor 对象引发的异常。

8 类型[] getGenericParameterTypes()

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

9 类型 getGenericReturnType()

返回一个 Type 对象,该对象表示此 Method 对象表示的方法的正式返回类型。

10 int getModifiers()

以整数形式返回此 Method 对象表示的方法的 Java 语言修饰符。

11 字符串 getName()

以字符串形式返回此方法的名称。

12 注释[][] getParameterAnnotations()

返回一个数组数组,这些数组按声明顺序表示此 Method 对象表示的方法的形式参数上的注释。

13 类<?>[] getParameterTypes()

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

14 类<?> getReturnType()

返回一个 Class 对象,该对象表示此 Method 对象表示的方法的正式返回类型。

15 int 哈希码()

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

16 对象调用(对象 obj, 对象... args)

使用指定参数在指定对象上调用此 Method 对象表示的基础方法。

17 号 布尔 isBridge()

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

18 布尔 isSynthetic()

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

19 布尔 isVarArgs()

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

20 字符串到通用字符串()

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

21 字符串转字符串()

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

继承的方法

该类继承了以下类的方法 -

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

java.lang.reflect - 修饰符类

介绍

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 - 表示 public 修饰符的 int 值。

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

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

  • static int SYNCHRONIZED - 表示同步修饰符的 int 值。

  • static int TRANSIENT - 表示瞬态修饰符的 int 值。

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

构造函数

先生。 构造函数及描述
1 修饰符()

默认构造函数。

类方法

先生。 方法及说明
1 static int classModifiers()

返回一个 int 值,将可应用于类的源语言修饰符组合在一起。

2 static int 构造函数修饰符()

返回一个 int 值,将可应用于构造函数的源语言修饰符组合在一起。

3 静态 int 字段修饰符()

返回一个 int 值,将可应用于字段的源语言修饰符组合在一起。

4 static int 接口修饰符()

返回一个 int 值,将可应用于接口的源语言修饰符组合在一起。

5 静态布尔 isAbstract(int mod)

如果整数参数包含抽象修饰符,则返回 true,否则返回 false。

6 静态布尔 isFinal(int mod)

如果整数参数包含 Final 修饰符,则返回 true,否则返回 false。

7 静态布尔 isInterface(int mod)

如果整数参数包含接口修饰符,则返回 true,否则返回 false。

8 静态布尔 isNative(int mod)

如果整数参数包含 native 修饰符,则返回 true,否则返回 false。

9 静态布尔 isPrivate(int mod)

如果整数参数包含 private 修饰符,则返回 true,否则返回 false。

10 静态布尔 isProtected(int mod)

如果整数参数包含 protected 修饰符,则返回 true,否则返回 false。

11 静态布尔 isPublic(int mod)

如果整数参数包含 public 修饰符,则返回 true,否则返回 false。

12 静态布尔 isStatic(int mod)

如果整数参数包含 static 修饰符,则返回 true,否则返回 false。

13 静态布尔 isStrict(int mod)

如果整数参数包含 strictfp 修饰符,则返回 true,否则返回 false。

14 静态布尔 isSynchronized(int mod)

如果整数参数包含同步修饰符,则返回 true,否则返回 false。

15 静态布尔 isTransient(int mod)

如果整数参数包含瞬态修饰符,则返回 true,否则返回 false。

16 静态布尔 isVolatile(int mod)

如果整数参数包含 volatile 修饰符,则返回 true,否则返回 false。

17 号 static int 方法修饰符()

返回一个 int 值,将可应用于方法的源语言修饰符组合在一起。

18 静态字符串 toString(int mod)

返回描述指定修饰符中的访问修饰符标志的字符串。

继承的方法

该类继承了以下类的方法 -

  • java.lang.Object

java.lang.reflect - 代理类

介绍

java.lang.reflect.Proxy类提供了用于创建动态代理类和实例静态方法,它也是由这些方法创建的所有动态代理类的超类。

类声明

以下是java.lang.reflect.Proxy类的声明-

public class Proxy
   extends Object
      implements Serializable

领域

以下是java.lang.reflect.Proxy类的字段-

  • protected IncationHandler h - 此代理实例的调用处理程序。

构造函数

先生。 构造函数及描述
1 受保护的代理(IncallingHandler h)

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

类方法

先生。 方法及说明
1 静态 IncationHandler getIncationHandler(对象代理)

返回指定代理实例的调用处理程序。

2 static Class<?> getProxyClass(ClassLoader 加载器, Class<?>... 接口)

返回给定类加载器和接口数组的代理类的 java.lang.Class 对象。

3 静态布尔 isProxyClass(Class<?> cl)

当且仅当指定的类是使用 getProxyClass 方法或 newProxyInstance 方法动态生成为代理类时,才返回 true。

4 static Object newProxyInstance(ClassLoader 加载器, Class<?>[] 接口, InvocationHandler h)

返回指定接口的代理类实例,该接口将方法调用分派到指定的调用处理程序。

继承的方法

该类继承了以下类的方法 -

  • java.lang.Object

java.lang.reflect - 接口

介绍

java.lang.reflect 接口包含用于获取有关类和对象的反射信息的接口。

接口概要

先生。 接口及说明
1

注释元素

表示当前在此 VM 中运行的程序的带注释的元素。

2

通用数组类型

GenericArrayType 表示一个数组类型,其组件类型可以是参数化类型,也可以是类型变量。

3

通用声明

所有声明类型变量的实体的通用接口。

4

调用处理程序

IncationHandler 是代理实例的调用处理程序实现的接口。

5

成员

成员是一个接口,反映有关单个成员(字段或方法)或构造函数的标识信息。

6

参数化类型

ParameterizedType 表示参数化类型,例如 Collection<String>。

7

类型

Type 是 Java 编程语言中所有类型的公共超级接口。

8

列表<E>

这是一个有序集合(也称为序列)。

9

TypeVariable<D 扩展 GenericDeclaration>

TypeVariable 是各种类型变量的通用超级接口。

10

通配符类型

WildcardType 表示通配符类型表达式,如?、?扩展数字,或?超级整数。

java.lang.reflect - 异常

介绍

java.lang.reflect Exceptions包含反射操作期间可能发生的异常。

例外情况总结

先生。 异常情况及说明
1

调用目标异常

IncationTargetException 是一个检查异常,它包装由调用的方法或构造函数引发的异常。

2

格式错误的参数化类型异常

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

3

未声明的ThrowableException

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

java.lang.reflect - 错误

介绍

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

错误摘要

先生。 错误及描述
1

通用签名格式错误

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