码迷,mamicode.com
首页 > 其他好文 > 详细

【反射】Class Field Method Constructor

时间:2017-08-31 22:19:44      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:getchar   null   关于   val   4.4   sans   上下   running   public   

Class

public final class java.lang.Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement
类型参数 T:由此 Class 对象建模的类的类型。例如, String.class 的类型是 Class<String>。如果将被建模的类未知,则使用 Class<?>。

Instances of the class Class represent classes and interfaces in a running Java application. An enum is a kind of class and an annotation is a kind of interface. Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注解是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。八种基本类型和关键字 void 也表示为 Class 对象。

Class has no public constructor. Instead Class objects are constructed automatically by the Java Virtual Machine as classes are loaded and by calls to the defineClass method in the class loader.
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的


注解 Annotation

<A extends Annotation> A  getAnnotation(Class<A> annotationClass)  如果存在该元素的指定类型的注解,则返回这些注解,否则返回 null。
Annotation[]  getAnnotations()  返回此元素上存在的所有注解。
Annotation[]  getDeclaredAnnotations()  返回直接存在于此元素上的所有注解。
boolean  isAnnotation()  如果此 Class 对象表示一个注解类型则返回 true。
boolean  isAnnotationPresent(Class<? extends Annotation> annotationClass)  如果指定类型的注解存在于此元素上,则返回 true,否则返回 false。

构造器 Constructor

Constructor<T>  getConstructor(Class<?>... parameterTypes)  返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。
Constructor<?>[]  getConstructors()  返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。
Constructor<T>  getDeclaredConstructor(Class<?>... parameterTypes)  返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。
Constructor<?>[]  getDeclaredConstructors()  返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。
Constructor<?>  getEnclosingConstructor()  如果该 Class 对象表示构造方法中的一个本地或匿名类,则返回 Constructor 对象,它表示底层类的立即封闭构造方法。

方法 Method

Method  getDeclaredMethod(String name, Class<?>... parameterTypes)  返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。
Method[]  getDeclaredMethods()  返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
Method  getEnclosingMethod()  如果此 Class 对象表示某一方法中的一个本地或匿名类,则返回 Method 对象,它表示底层类的立即封闭方法。
Method  getMethod(String name, Class<?>... parameterTypes)  返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
Method[]  getMethods()  返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。

字段 Field

Field  getDeclaredField(String name)  返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。
Field[]  getDeclaredFields()  返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。
Field  getField(String name)  返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
Field[]  getFields()  返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。

Class对象

static Class<?>  forName(String className)  返回与带有给定字符串名的类或接口相关联的 Class 对象。
static Class<?>  forName(String name, boolean initialize, ClassLoader loader)  使用给定的类加载器,返回与带有给定字符串名的类或接口相关联的 Class 对象。
<U> Class<? extends U>  asSubclass(Class<U> clazz)  强制转换该 Class 对象,以表示指定的 class 对象所表示的类的一个子类。
T  cast(Object obj)  将一个对象强制转换成此 Class 对象所表示的类或接口。
Class<?>[]  getClasses()  返回一个包含某些 Class 对象的数组,这些对象表示属于此 Class 对象所表示的类的成员的所有公共类和接口。
Class<?>  getComponentType()  返回表示数组组件类型的 Class。
Class<?>[]  getDeclaredClasses()  返回 Class 对象的一个数组,这些对象反映声明为此 Class 对象所表示的类的成员的所有类和接口。
Class<?>  getDeclaringClass()  如果此 Class 对象所表示的类或接口是另一个类的成员,则返回的 Class 对象表示该对象的声明类。
Class<?>  getEnclosingClass()  返回底层类的立即封闭类。
Class<?>[]  getInterfaces()  确定此对象所表示的类或接口实现的接口。
Class<? super T>  getSuperclass()  返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。

String 名称

String  getName()  以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
String  getSimpleName()  返回源代码中给出的底层类的简称。
String  getCanonicalName()  返回 Java Language Specification 中所定义的底层类的规范化名称。
String  toString()  将对象转换为字符串。

返回 boolean

boolean  desiredAssertionStatus()  如果要在调用此方法时将要初始化该类,则返回将分配给该类的断言状态。
boolean  isAnonymousClass()  当且仅当底层类是匿名类时返回 true。
boolean  isArray()  判定此 Class 对象是否表示一个数组类。
boolean  isAssignableFrom(Class<?> cls)  判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。
boolean  isEnum()  当且仅当该类声明为源代码中的枚举时返回 true。
boolean  isInstance(Object obj)  判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。
boolean  isInterface()  判定指定的 Class 对象是否表示一个接口类型。
boolean  isLocalClass()  当且仅当底层类是本地类时返回 true。
boolean  isMemberClass()  当且仅当底层类是成员类时返回 true。
boolean  isPrimitive()  判定指定的 Class 对象是否表示一个基本类型。
boolean  isSynthetic()  如果此类是复合类,则返回 true,否则 false。

其他方法

ClassLoader  getClassLoader()  返回该类的类加载器。
T[]  getEnumConstants()  如果此 Class 对象不表示枚举类型,则返回枚举类的元素或 null。
Type[]  getGenericInterfaces()  返回表示某些接口的 Type,这些接口由此对象所表示的类或接口直接实现。
Type  getGenericSuperclass()  返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type。
int  getModifiers()  返回此类或接口以整数编码的 Java 语言修饰符。
Package  getPackage()  获取此类的包。
ProtectionDomain  getProtectionDomain()  返回该类的 ProtectionDomain。
URL  getResource(String name)  查找带有给定名称的资源。
InputStream  getResourceAsStream(String name)  查找具有给定名称的资源。
Object[]  getSigners()  获取此类的标记。
TypeVariable<Class<T>>[]  getTypeParameters()  按声明顺序返回 TypeVariable 对象的一个数组,这些对象表示用此 GenericDeclaration 对象所表示的常规声明来声明的类型变量。
T  newInstance()  创建此 Class 对象所表示的类的一个新实例。

Field

public final class java.lang.reflect.Field extends  AccessibleObject  implements  Member
A Field provides information about, and dynamic access to, a single field of a class or an interface. The reflected field may be a class (static) field or an instance field.
Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。

A Field permits widening conversions to occur during a get or set access operation, but throws an IllegalArgumentException if a narrowing conversion would occur.
Array 允许在执行 get 或 set 访问操作期间进行扩展转换,但如果将发生收缩转换,则抛出一个 IllegalArgumentException。

get基本数据类型

  1. boolean  getBoolean(Object obj)  获取一个静态或实例 boolean 字段的值。
    • 参数:obj - 从中提取 boolean 值的对象。
    • 返回:boolean 字段的值
    • IllegalAccessException - 如果底层字段是不可访问的。
    • IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 boolean 类型
    • NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。
    • ExceptionInInitializerError - 如果此方法引起的初始化失败。
  2. byte  getByte(Object obj)  获取一个静态或实例 byte 字段的值。
  3. char  getChar(Object obj)  获取 char 类型或另一个通过扩展转换可以转换为 char 类型的基本类型的静态或实例字段的值。
  4. double  getDouble(Object obj)  获取 double 类型或另一个通过扩展转换可以转换为 double 类型的基本类型的静态或实例字段的值。
  5. float  getFloat(Object obj)  获取 float 类型或另一个通过扩展转换可以转换为 float 类型的基本类型的静态或实例字段的值。
  6. int  getInt(Object obj)  获取 int 类型或另一个通过扩展转换可以转换为 int 类型的基本类型的静态或实例字段的值。
  7. long  getLong(Object obj)  获取 long 类型或另一个通过扩展转换可以转换为 long 类型的基本类型的静态或实例字段的值。
  8. short  getShort(Object obj)  获取 short 类型或另一个通过扩展转换可以转换为 short 类型的基本类型的静态或实例字段的值。

set基本数据类型

  1. void  setBoolean(Object obj, boolean z)  将字段的值设置为指定对象上的一个 boolean 值。
    • 该方法等同于 set(obj, zObj),其中 zObj 是一个 Boolean 对象,并且 zObj.booleanValue() == z。
    • 参数:obj - 应该修改其字段的对象;b - 正被修改的 obj 的字段的新值
  2. void  setByte(Object obj, byte b)  将字段的值设置为指定对象上的一个 byte 值。
  3. void  setChar(Object obj, char c)  将字段的值设置为指定对象上的一个 char 值。
  4. void  setDouble(Object obj, double d)  将字段的值设置为指定对象上的一个 double 值。
  5. void  setFloat(Object obj, float f)  将字段的值设置为指定对象上的一个 float 值。
  6. void  setInt(Object obj, int i)  将字段的值设置为指定对象上的一个 int 值。
  7. void  setLong(Object obj, long l)  将字段的值设置为指定对象上的一个 long 值。
  8. void  setShort(Object obj, short s)  将字段的值设置为指定对象上的一个 short 值。

get/set 方法

Object  get(Object obj)  返回指定对象上此 Field 表示的字段的值
参数:obj - 从中提取所表示字段的值的对象
返回:对象 obj 中的所表示字段的值;在返回之前,基值包装在一个适当的对象中
底层字段的值是按以下方式获得的:
  • 如果底层字段是一个静态字段,则忽略 obj 变量;它可能为 null。
  • 否则,底层字段是一个实例字段。如果指定的 obj 变量为 null,则该方法将抛出一个 NullPointerException。如果指定对象不是声明底层字段的类或接口的实例,则该方法将抛出一个 IllegalArgumentException。
  • 如果此 Field 对象强制实施 Java 语言访问控制,并且底层字段是不可访问的,则该方法将抛出一个 IllegalAccessException。
  • 如果底层字段是静态的,并且声明该字段的类尚未初始化,则初始化这个类。
  • 否则,从底层实例字段或静态字段中获取该值。如果该字段是一个基本类型字段,则在返回前将该值包装在一个对象中,否则照原样返回。
  • 如果字段隐藏在 obj 的类型中,则根据前面的规则获得字段的值。
抛出:
  1. IllegalAccessException - 如果底层字段是不可访问的。
  2. IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例。
  3. NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。
  4. ExceptionInInitializerError - 如果此方法引起的初始化失败。

void  set(Object obj, Object value)  将指定对象变量上此 Field 对象表示的字段设置为指定的新值
进行此操作的方式如下:
  1. 如果底层字段是静态字段,则忽略 obj 变量;它可能为 null。
  2. 否则底层字段是一个实例字段。如果指定对象变量为 null,则该方法将抛出一个 NullPointerException。如果指定对象变量不是声明底层字段的类或接口的实例,则该方法将抛出一个 IllegalArgumentException。
  3. 如果此 Field 对象实施 Java 语言访问控制,并且底层字段是不可访问的,则该方法将抛出一个 IllegalAccessException。
  4. 如果底层字段为 final 字段,则该方法将抛出一个 IllegalAccessException,除非 setAccessible(true) 已经继承该字段并且该字段是一个非静态字段。在通过程序的其他部分可以访问类的实例之前,只有使用空白 final 字段反序列化或重构类的实例期间,以这种方式设置 final 字段才有意义。在其他任何上下文中使用该方法都可能会有不可预知的结果,包括程序的其他部分继续使用该字段的原始值的情况。
  5. 如果底层字段的类型为某一基本类型,则可以尝试使用解包转换将新值转换为基本类型的值。如果该尝试失败,则此方法将抛出一个 IllegalArgumentException。
  6. 如果在进行可能的解包之后,无法通过某一标识或扩展转换将新值转换为底层字段的类型,则此方法将抛出一个 IllegalArgumentException。
  7. 如果底层字段是静态的,并且声明该字段的类尚未初始化,则初始化这个类。
  8. 字段被设置为可能已解包并扩大的新值。
  9. 如果字段隐藏在 obj 的类型中,则根据前面的规则设置字段的值。

其他方法

【注解】
  • <T extends Annotation> T  getAnnotation(Class<T> annotationClass)  如果存在该元素的指定类型的注解,则返回这些注解,否则返回 null。
  • Annotation[]  getDeclaredAnnotations()  返回直接存在于此元素上的所有注解。
【Class】
  • Class<?>  getDeclaringClass()  返回表示类或接口的 Class 对象,该类或接口声明由此 Field 对象表示的字段。
  • Class<?>  getType()  返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。
【String】
  • String  getName()  返回此 Field 对象表示的字段的名称。
  • String  toGenericString()  返回一个描述此 Field(包括其一般类型)的字符串。
  • String  toString()  返回一个描述此 Field 的字符串。
【boolean】
  • boolean  isEnumConstant()  如果此字段表示枚举类型的元素,则返回 true;否则返回 false。
  • boolean  isSynthetic()  如果此字段是复合字段,则返回 true;否则返回 false。
  • boolean  equals(Object obj)  将此 Field 与指定对象比较。
【其他】
  • Type  getGenericType()  返回一个 Type 对象,它表示此 Field 对象所表示字段的声明类型。
  • int  getModifiers()  以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符。
  • int  hashCode()  返回该 Field 的哈希码。

Method

public final class java.lang.reflect.Method extends AccessibleObject implements GenericDeclaration, Member
A Method provides information about, and access to, a single method on a class or interface. The reflected method may be a class method or an instance method (including an abstract method).
Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。

A Method permits widening conversions to occur when matching the actual parameters to invoke with the underlying method‘s formal parameters, but it throws an IllegalArgumentException if a narrowing conversion would occur.
Method 允许在匹配要调用的实参与底层方法的形参时进行扩展转换;但如果要进行收缩转换,则会抛出 IllegalArgumentException。

Class

Class<?>  getDeclaringClass()  返回表示声明由此 Method 对象表示的方法的类或接口的 Class 对象。
Class<?>[]  getExceptionTypes()  返回 Class 对象的数组,这些对象描述了声明将此 Method 对象表示的底层方法抛出的异常类型。
Class<?>[]  getParameterTypes()  按照声明顺序返回 Class 对象的数组,这些对象描述了此 Method 对象所表示的方法的形参类型。
Class<?>  getReturnType()  返回一个 Class 对象,该对象描述了此 Method 对象所表示的方法的正式返回类型。

Type

Type[]  getGenericExceptionTypes()  返回 Type 对象数组,这些对象描述了声明由此 Method 对象抛出的异常。
Type[]  getGenericParameterTypes()  按照声明顺序返回 Type 对象的数组,这些对象描述了此 Method 对象所表示的方法的形参类型的。
Type  getGenericReturnType()  返回表示由此 Method 对象所表示方法的正式返回类型的 Type 对象。

Annotation

<T extends Annotation> T  getAnnotation(Class<T> annotationClass)  如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
Annotation[]  getDeclaredAnnotations()  返回直接存在于此元素上的所有注释。
Annotation[][]  getParameterAnnotations()  返回表示按照声明顺序对此 Method 对象所表示方法的形参进行注释的那个数组的数组。

invoke 方法

Object  invoke(Object obj, Object... args)  对带有指定参数的指定对象调用由此 Method 对象表示的底层方法
个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。
  • 如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null。
  • 如果底层方法所需的形参个数为 0,则所提供的 args 数组长度可以为 0 或 null。
  • 如果底层方法是实例方法,则使用动态方法查找来调用它,这一点记录在 Java Language Specification, Second Edition 的第 15.12.4.4 节中;在发生基于目标对象的运行时类型的重写时更应该这样做。
  • 如果底层方法是静态的,并且尚未初始化声明此方法的类,则会将其初始化。
  • 如果方法正常完成,则将该方法返回的值返回给调用者;如果该值为基本类型,则首先适当地将其包装在对象中。但是,如果该值的类型为一组基本类型,则数组元素不被包装在对象中;换句话说,将返回基本类型的数组。如果底层方法返回类型为 void,则该调用返回 null。
参数:obj - 从中调用底层方法的对象;args - 用于方法调用的参数
返回:使用参数 args 在 obj 上指派该对象所表示方法的结果
抛出:
  • IllegalAccessException - 如果此 Method 对象强制执行 Java 语言访问控制,并且底层方法是不可访问的。
  • IllegalArgumentException - 如果该方法是实例方法,且指定对象参数不是声明底层方法的类或接口(或其中的子类或实现程序)的实例;如果实参和形参的数量不相同;如果基本参数的解包转换失败;如果在解包后,无法通过方法调用转换将参数值转换为相应的形参类型。
  • InvocationTargetException - 如果底层方法抛出异常。
  • NullPointerException - 如果指定对象为 null,且该方法是一个实例方法。
  • ExceptionInInitializerError - 如果由此方法引起的初始化失败。

其他方法

【String】
String  getName()  以 String 形式返回此 Method 对象表示的方法名称。
String  toGenericString()  返回描述此 Method 的字符串,包括类型参数。
String  toString()  返回描述此 Method 的字符串。
boolean
boolean  isBridge()  如果此方法是 bridge 方法,则返回 true;否则,返回 false。
boolean  isSynthetic()  如果此方法为复合方法,则返回 true;否则,返回 false。
boolean  isVarArgs()  如果将此方法声明为带有可变数量的参数,则返回 true;否则,返回 false。
boolean  equals(Object obj)  将此 Method 与指定对象进行比较。
【其他】
Object  getDefaultValue()  返回由此 Method 实例表示的注释成员的默认值。
int  getModifiers()  以整数形式返回此 Method 对象所表示方法的 Java 语言修饰符。
TypeVariable<Method>[]  getTypeParameters()  返回 TypeVariable 对象的数组,这些对象描述了由 GenericDeclaration 对象表示的一般声明按声明顺序来声明的类型变量。
int  hashCode()  返回此 Method 的哈希码。

Constructor

public final class java.lang.reflect.Constructor<T> extends AccessibleObject implements GenericDeclaration, Member
Constructor provides information about, and access to, a single constructor for a class.
Constructor 提供关于类的单个构造方法的信息以及对它的访问权限。

Constructor permits widening conversions to occur when matching the actual parameters to newInstance() with the underlying constructor‘s formal parameters, but throws an IllegalArgumentException if a narrowing conversion would occur.
Constructor 允许在将实参与带有底层构造方法的形参的 newInstance() 匹配时进行扩展转换,但是如果发生收缩转换,则抛出 IllegalArgumentException。

Class

Class<T>  getDeclaringClass()  返回 Class 对象,该对象表示声明由此 Constructor 对象表示的构造方法的类。
Class<?>[]  getExceptionTypes()  返回一组表示声明要抛出的异常类型的 Class 对象,这些异常是由此 Constructor 对象表示的底层构造方法抛出的。
Class<?>[]  getParameterTypes()  按照声明顺序返回一组 Class 对象,这些对象表示此 Constructor 对象所表示构造方法的形参类型。

Annotation

<T extends Annotation> T  getAnnotation(Class<T> annotationClass)  如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
Annotation[]  getDeclaredAnnotations()  返回直接存在于此元素上的所有注释。
Annotation[][]  getParameterAnnotations()  按照声明顺序返回一组数组,这些数组表示通过此 Constructor 对象表示的方法的形参上的注释。

newInstance 方法

T  newInstance(Object... initargs)  使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。
个别参数会自动解包,以匹配基本形参,必要时,基本参数和引用参数都要进行方法调用转换。
  • 如果底层构造方法所需形参个数为 0,则所提供的 initargs 数组的长度可能为 0 或 null。
  • 如果构造方法的声明类是非静态上下文的内部类,则构造方法的第一个参数需要是封闭实例;请参阅Java 语言规范 第 15.9.3 节。
  • 如果所需的访问检查和参数检查获得成功并且实例化继续进行,这时构造方法的声明类尚未初始化,则初始化这个类。
  • 如果构造方法正常完成,则返回新创建且已初始化的实例。
参数:initargs - 将作为变量传递给构造方法调用的对象数组;基本类型的值被包装在适当类型的包装器对象中。
返回:通过调用此对象表示的构造方法来创建的新对象
抛出:
  • IllegalAccessException - 如果此 Constructor 对象实施 Java 语言访问控制并且底层构造方法是不可访问的。
  • IllegalArgumentException - 如果实参和形参的数量不同;如果基本参数的解包转换失败;如果在可能的解包后,无法通过方法调用转换将参数值转换为相应的形参类型;如果此构造方法属于枚举类型。
  • InstantiationException - 如果声明底层构造方法的类表示抽象类。
  • InvocationTargetException - 如果底层构造方法抛出异常。
  • ExceptionInInitializerError - 如果此方法引发的初始化失败。

其他方法

【String】
String  getName()  以字符串形式返回此构造方法的名称。
String  toGenericString()  返回描述此 Constructor 的字符串,其中包括类型参数。
String  toString()  返回描述此 Constructor 的字符串。
【Type
Type[]  getGenericExceptionTypes()  返回一组 Type 对象,这些对象表示声明要由此 Constructor 对象抛出的异常。
Type[]  getGenericParameterTypes()  按照声明顺序返回一组 Type 对象,这些对象表示此 Constructor 对象所表示的方法的形参类型。
【boolean
boolean  isSynthetic()  如果此构造方法是一个复合构造方法,则返回 true;否则返回 false。
boolean  isVarArgs()  如果声明此构造方法可以带可变数量的参数,则返回 true;否则返回 false。
boolean  equals(Object obj)  将此 Constructor 对象与指定的对象进行比较。
【其他】
int  getModifiers()  以整数形式返回此 Constructor 对象所表示构造方法的 Java 语言修饰符。
TypeVariable<Constructor<T>>[]  getTypeParameters()  按照声明顺序返回一组 TypeVariable 对象,这些对象表示通过此 GenericDeclaration 对象所表示的一般声明来声明的类型变量。
int  hashCode()  返回此 Constructor 的哈希码。

枚举 ElementType

public enum java.lang.annotation.ElementType extends Enum<ElementType>
程序元素类型。此枚举类型的常量提供了 Java 程序中声明的元素的简单分类。
这些常量与 Target 元注释类型一起使用,以指定在什么情况下使用注释类型是合法的。

枚举常量
  1. ANNOTATION_TYPE  注释类型声明
  2. CONSTRUCTOR  构造方法声明
  3. FIELD  字段声明(包括枚举常量)
  4. LOCAL_VARIABLE   局部变量声明
  5. METHOD  方法声明
  6. PACKAGE  包声明
  7. PARAMETER  参数声明
  8. TYPE  类、接口(包括注释类型)或枚举声明
  9. TYPE_PARAMETER    @since 1.8
  10. TYPE_USE    @since 1.8

方法
static ElementType[]    values()  Returns an array containing the constants of this enum type, in the order they are declared.
static ElementType    valueOf(String name)   返回带有指定名称的该类型的枚举常量。
  • 字符串必须与用于声明该类型的枚举常量的 标识符 完全匹配(不允许有多余的空格,大小写敏感)
  • 如果该枚举类型没有带有指定名称的常量, - 则抛出 IllegalArgumentException
System.out.println(ElementType.values().length);//10
for (ElementType c : ElementType.values()) {
	System.out.print(c + "  ");//TYPE  FIELD  METHOD  PARAMETER  CONSTRUCTOR
    //LOCAL_VARIABLE  ANNOTATION_TYPE  PACKAGE  TYPE_PARAMETER  TYPE_USE  
}
System.out.println(ElementType.valueOf("FIELD"));//FIELD
2017-8-31




【反射】Class Field Method Constructor

标签:getchar   null   关于   val   4.4   sans   上下   running   public   

原文地址:http://www.cnblogs.com/baiqiantao/p/7460650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!