文章目录
article
反射机制
AI文章摘要
gemini-2.0-flash-lite
这篇文章介绍了Java类的生命周期以及类对象的创建方式。Java类的生命周期分为三个阶段:Source(源代码编译成字节码)、Class(字节码加载进内存生成Class对象)和Runtime(通过Class对象创建类的实例)。文章详细阐述了普通创建、匿名对象创建以及使用Class对象创建实例的方法,并重点介绍了Class类及其相关成员和静态方法,包括获取类名、成员变量、构造方法、成员方法等信息,以及通过Class.forName()加载Class对象。此外,还提及了ClassLoader类及其获取资源的方法。
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); 获取根路径下资源的绝对路径
//静态方法