java.lang.reflect_java.lang.reflect(一)

  • Post author:
  • Post category:java


要梳理这个包,就必须要整理一下反射了。为了方便描述,我们假定已经写好了一个普通类,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包下的接口

5e5eb3d58a75a306d10d2eea3fe7a22b.png

获取一个类的Class对象一般有2种方法:

Class userClass=User.class; //类名.class

Class> userClass = Class.forName(“com.study.reflect.User”); /



版权声明:本文为weixin_33088763原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。