Java反射的理解

发布时间:2019-05-26 14:00:01发布者:Mr.Zhang阅读(529)

一、什么是反射

  反射是Java提供的动态获取对象和调用对象方法的功能。我们知道在Java中,获取对象的最常用的办法是通过关键字“new”,但这要我们事先将需要获取的对象写死在代码里,在代码运行期间无法改变。而Java的反射机制可以让我们动态获取对象,在代码运行期间才决定获取哪个对象。

二、反射的作用

  Java引入反射机制,是为了提高程序的灵活性,减少代码之间的耦合度。比如我们要实例化一个Person类,如果不使用反射,我们只能通过关键字“new”进行实例化:

1 Person person = new Person();

  被实例化的类写死在了代码中,运行期间不可更改。但如果我们使用反射,则代码如下:

 1 public class Test1 {
 2     public static void main(String[] args) {
 3 
 4         Object object;
 5         String className = "person.Person";               //Person类的全类名
 6 
 7         try {
 8             object = Class.forName(className).newInstance();    //获取Person类的运行时类并实例化
 9         } catch (Exception e) {
10             e.printStackTrace();
11         }
12     }
13 }

  反射支持我们使用全类名来获取对象,并且可以通过变量来传值。这样,我们就可以在代码的运行期间动态的决定实例化哪个类。不仅如此,我们还可以将类描述定义到配置文件中,如果想要实例化其他类,修改配置文件就可以了,而不需要修改代码再重新编译。这样就降低了代码之间的耦合度。

  Java的反射机制还提供了很多方法可以获取运行时类、进行类实例化、获取类的属性、获取类的方法、获取类的构造函数等,这里不再深究。

  反射机制一般在框架中使用的较多,因为框架需要适应多种情况,对灵活性要求教高。理解好反射,是理解框架技术的基础。





本文转自博客园,原文地址:https://www.cnblogs.com/ysyasd/p/10923876.html