java语言提供反射机制,也就提供了一种动态创建java实例对象的方式。很多人对 new 和 反射创建对象的区别在于动态创建并不是很理解,因为毕竟即使是使用 new 关键字进行创建对象其实也是“动态”创建的,因为都是在虚拟机运行时创建,那么这个动态创建到底应该怎么理解呢?事实上,所谓的动态,可以理解为在某些情况下,我们可以通过不修改 java 代码就实现随时“动态”增删新的 java 对象。现在抛开反射机制,如果在一个项目中,我们需要新的 java 对象,那么我们应该怎么做的?当然是通过 new 来获取,然后在重新编译代码。如果有了反射机制,我们就可以不用这么麻烦,直接按需通过对应类型全限定类名动态创建对象并使用,那么所需的类名怎么来呢?可以通过将类名写在配置文件中,然后直接通过读取配置文件来动态创建我们所需要的对象实例。事实上强大的 spring 就是这么做的。 顺便提一句,spring 容器采用反射机制为我们动态提供实例对象其实是充分利用了封装这一特性,将底层的反射创建对象的具体实现封装起来,而我们只需要传入一个全类名的参数即可获取到对应类的实例。