对java.lang.Class类的理解
1.类的加载过程:
程序经过javac.exe命令之后,会生成一个或多个字节码文件(.class)。
接着我们使用java.exe命令对某个字节码文件进行解释运行,相当于将某个字节码文加载到内存中。
加载到内存中的类,称为运行时类,此运行时类,就作为Class的一个实例。
2.加载到内存中的运行时类,会缓存一定的时间。在此时间内,可以通过不同的方式来获取此运行时类
获取Class的实例方式
- 调用运行时类的属性:.class
- 通过运行时类的对象,调用getClass()
- 调用Class的静态方法:forName(String classPath)
- 使用类的加载器:classLoader
创建运行时类的对象
newInstance():调用此方法,创建对应的运行时类的对象,内部调用了运行时类的空参构造器。
要使用此方法正常的创建运行时类的对象,要求:
1.运行时类必须提供空参的构造器
2.空参的构造器的访问权限一般设置为public
方法
public Field[] getFields():获取当前运行时类及其父类中声明为public访问权限的属性
public Field[] getDeclaredFields() :获取当前运行时类当中声明的所有属性(不包含父类中声明的属性)
public Method[] getMethods():获取当前运行时类及其父类中声明为public权限的方法
public Method[] getDeclaredMethods():获取当前运行时类中声明的所有方法(不包含父类中声明的方法)
public Constructor<?>[] getConstructors():获取当前运行时类中声明为public的构造器
public Constructor<?>[] getDeclaredConstructors():获取当前运行时类中声明所有构造器