java反射机制是指在程序运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。
写了一个小demo:
这是fangdong类
package com.example.SpringLean.demo01;
import java.lang.reflect.*;
public class fangdong implements Rent {
@Override
public void rent() {
// TODO Auto-generated method stub
System.out.println("rent house");
}
}
使用java反射动态创建:
@Test
void testReflection() {
try {
//Class<?> clazz = Class.forName("com.example.SpringLean.demo01.fangdong"); //通过包名+类名
Class<?> clazz = com.example.SpringLean.demo01.fangdong.class; // 直接通过类名创建
Constructor<?>[] constructors = clazz.getConstructors();
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
Method[] methods = clazz.getMethods();
System.out.println("\nMethods:");
for (Method method : methods) {
System.out.println(method);
}
Field[] fields = clazz.getFields();
System.out.println("\nFields:");
for (Field field : fields) {
System.out.println(field);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
一般的java反射创建对象:
Class clazz = Class.forName("包名+类名")
Class clazz = 对象.getClass();
Class clazz = 类名.class
获取构造器:
Constructor<?>[] constructors = clazz.getConstructors();