🤖 AI文章摘要 gemini-2.0-flash-lite

这篇文章介绍了Java类的生命周期以及类对象的创建方式。Java类的生命周期分为三个阶段:Source(源代码编译成字节码)、Class(字节码加载进内存生成Class对象)和Runtime(通过Class对象创建类的实例)。文章详细阐述了普通创建、匿名对象创建以及使用Class对象创建实例的方法,并重点介绍了Class类及其相关成员和静态方法,包括获取类名、成员变量、构造方法、成员方法等信息,以及通过Class.forName()加载Class对象。此外,还提及了ClassLoader类及其获取资源的方法。

3aefbd440adbcdf67d3c531656750763

Refect

类加载过程

  • java类的生命周期: java类从定义到对象创建需要经历三个阶段
  • Source阶段里, JVM将java源代码编译成Java字节码文件(class文件)
  • Class阶段里, ClassLoader对象将字节码文件加载进内存并产生Class对象
  • Runtime阶段里, 由Java Class对象创建指定类的对象
  • java类对象的创建 注意: 类的数组默认值为null, 不自动调用构造方法, 需要手动调用并赋值
  • 普通创建: className target = new className(参数或缺省);
  • 匿名对象创建: new className(参数或缺省)
  • Class对象创建: Class.forName(“类名”).getConstructor().newInstance() Class类是描述class字节码文件的类. 封装了维护字节码文件的一些方法. 每个类的字节码文件通过ClassLoader加载进内存后会生成一个唯一的Class类对象. 可以通过类名.class对象名.getClass()获取这个对象, 还可以通过Class类的静态方法forName(类的全引用)来加载Class对象
  //构造方法:
Class()

//成员方法:  获取类的成员之后调用
String getName(): 获取类的全名
String getSimpleName(): 获取简单类名
Field[] getFields(): 获取所有public修饰的成员变量
	- Field  getField(): 
	- Field类中由get()和set()方法设置该字段值
Constructor<?>[] getConstructors() 
	- Constructor<T> getConstructor(类<?>... parameterTypes)  
	- Constructor类中有newInstance()方法创建创建类对象
Method[] getMethods()  
	- Method getMethod(String name, 类<?>... parameterTypes)  

Field[] getDeclearFields(): 获取所有成员变量, 不考虑修饰符
	- Field  getDeclearField()
Constructor<?>[] getDeclaredConstructors() 
	- Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)  
Method[] getDeclaredMethods()  
	- Method getDeclaredMethod(String name, 类<?>... parameterTypes)  

//静态方法
forName(String className): 尝试查找该类的字节码文件, 并加载到内存中返回该类的Class对象
  
  //构造方法

//成员方法
URL getResource(String name); 获取根路径下资源的绝对路径

//静态方法