1、基本用法
1.通过 .class 获取对象。
2.通过 getClass() 获取对象。
3.通过 Class.forName("") 获取对象。
2、示例代码
public class Reflex {
public static void main(String[] args) throws Exception {
Class class_1 = ReflexObject.class;
Class class_2 = new ReflexObject().getClass();
Class class_3 = Class.forName("com.basics.ReflexObject");
/**
* 创建类对象
*/
ReflexObject reflexObject = (ReflexObject) class_1.newInstance();
reflexObject.Method();
/**
* 操作属性
*/
Field[] fields = class_1.getDeclaredFields();
for (Field field : fields) {
System.out.println(field.getName());
}
/**
* 操作方法
*/
Method[] methods = class_1.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
/**
* 操作构造器
*/
Constructor[] constructors = class_1.getDeclaredConstructors();
for (Constructor constructor : constructors) {
System.out.println(constructor.getName());
}
}
}
class ReflexObject {
public String publicAttribute;
private String privateAttribute;
protected String protectedAttribute;
public ReflexObject() {
System.out.println("反射构造器");
}
public void Method() {
System.out.println("反射方法");
}
}