Java反射机制
Reflection概念
java运行时对于任意的一个类,都可以通过某个方式获取这个类的属性/方法、调用属性/方法,这个动态的方式被称作反射机制(Reflection).
实现Reflection则必须获取Class类对象!
Class对象
Class的构造方法为private,只允许私有调用,即被JVM调用。JVM运行时,每个类都有对应的Class对象,因为在编译后生成.class文件,Class对象由JVM加载进内存。
- Class构造方法
private Class(ClassLoader loader) {
// Initialize final field for classLoader. The initialization value of non-null
// prevents future JIT optimizations from assuming this final field is null.
classLoader = loader;
}
获取类对象
- 被反射对象Model
public class Model {
private String name;
public Model(){}
public Model(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
- Way 1
//获取类对象方式1
public void getClassWay1() {
Model model = new Model();
//通过对象调用getClass方法获取类对象
Class<? extends Model> clazz = model.getClass();
}
- Way 2
//获取类对象方式2
public void getClassWay2() throws ClassNotFoundException {
Class<?> clazz = Class.forName("testtest.Reflection.Model");
}
- Way 3
//获取类对象方式3
public void getClassWay3() {
Class<? extends Model> clazz = Model.class;
}
创建类的对象时,JVM会检测该类型的Class对象是否已经加载,If not,JVM根据类名找到.class文件并加载进内存。加载后就可以用它来创建对象了。
获取了Class对象后,即可通过Class对象调用API获取或调用该类拥有的属性或方法。
如有错误请私信笔者

浙公网安备 33010602011771号