Java高级特性之反射

一、什么是反射?

了解正射?

在说什么是反射之前,我们先看平时使用类的常用形式(正射):

  1. Cat c = new Cat();
  2. c.setColor("orange");

我们都是直接创建对象实例,然后调用set方法设置属性
在这种情况下,通常我们是知道要使用的类是什么类,能用来干嘛,然后我们对这个类直接进行实例化,再使用这个类对象进行操作。

引出反射?

一般情况下,正射的使用对于代码的灵活性和通用性不太友好(也就是说代码写得比较死)。举个例子,登录一个系统都会有用户名和密码,如果我们将密码直接写死在代码中,那么后面要修改或者重置密码就会显得比较恶心。如果是将密码存到一个文件中(或者对象),我们只需要对这个文件或者对象操作就行了,灵活方便。因此,我们在不知道要用的类是什么类时,可以使用反射来解决这种困境。

还不懂?

反射机制是不知道类是什么样的,它是根据类的类名,去获取一个实例,然后根据方法名去执行方法。好比说,一般情况下画一只老虎,问我得先知道老虎长什么样子才能画出来;有了反射机制,我只要知道“老虎”这个名字就能画出来

什么是反射?

1、Java反射 - 图1

一句话概括就是:

反射就是把 Java 类中的各种成分映射成一个个的 Java 对象。