反射的概念
反射的概念是程序在运行的过程中创建对象,或者通过反射获取类的全部属性和方法,它是我们开发框架如spring、springmvc常用的方法。
反射的原理
在前面的 Java 类加载器加载流程 第2步中,将编译好的字节码文件加载到虚拟机,反射是通过字节码文件创建对象或找到全部的属性和方法。
获取类的三种方式
Java中有三种方式获取类,它们分别是
- 通过class.forName
- 通过类
- 通过类的实例对象
看下面的例子,介绍了3种方法是如何获取类的。
public class ReflectExample {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
//通过Class.forName
Class clz1 = Class.forName("Person");
Person p1 = (Person) clz1.newInstance();
p1.test();
//通过类
Class clz2 = Person.class;
//通过对象
Person p3 = new Person();
Class clz3 = p3.getClass();
}
}
class Person{
public void test(){
System.out.println("person test...");
}
}
其中第一种是反射的方式。
第二种是通过类的class