要梳理这个包,就必须要整理一下反射了。为了方便描述,我们假定已经写好了一个普通类,com.
反射API
接口
AnnotatedElement
GenericArrayType
GenericDeclaration
InvocationHandler
Member
ParameterizedType
Type
TypeVariable
WildcardType
类
AccessibleObject (代表访问检查的能力)
Array (代表数组)
Constructor (代表构造方法)
Field (代表类的成员变量,类属性)
Method (代表类的方法)
Modifier
Proxy
ReflectPermission
异常
InvocationTargetException
MalformedParameterizedTypeException
UndeclaredThrowableException
错误
GenericSignatureFormatError
对于反射,除了上述java.lang.reflect包下的类外,还有一个非常重要的java.lang.Class。上面标黑的就是反射里最最常用的类了。下面先从Class说起
1.java.lang.Class
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。
Class 的类关系图如下:其中,除了Serializable以外,其他三个接口都是java.lang.reflect包下的接口
获取一个类的Class对象一般有2种方法:
Class userClass=User.class; //类名.class
Class> userClass = Class.forName(“com.study.reflect.User”); /