反射的概念

反射的概念是程序在运行的过程中创建对象,或者通过反射获取类的全部属性和方法,它是我们开发框架如spring、springmvc常用的方法。

反射的原理

在前面的 Java 类加载器加载流程 第2步中,将编译好的字节码文件加载到虚拟机,反射是通过字节码文件创建对象或找到全部的属性和方法。

获取类的三种方式

Java中有三种方式获取类,它们分别是

  1. 通过class.forName
  2. 通过类
  3. 通过类的实例对象

看下面的例子,介绍了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