Java高级特性之反射
一、什么是反射?
了解正射?
在说什么是反射之前,我们先看平时使用类的常用形式(正射):
Cat c = new Cat();
c.setColor("orange");
我们都是直接创建对象实例,然后调用set方法设置属性。
在这种情况下,通常我们是知道要使用的类是什么类,能用来干嘛,然后我们对这个类直接进行实例化,再使用这个类对象进行操作。
引出反射?
一般情况下,正射的使用对于代码的灵活性和通用性不太友好(也就是说代码写得比较死)。举个例子,登录一个系统都会有用户名和密码,如果我们将密码直接写死在代码中,那么后面要修改或者重置密码就会显得比较恶心。如果是将密码存到一个文件中(或者对象),我们只需要对这个文件或者对象操作就行了,灵活方便。因此,我们在不知道要用的类是什么类时,可以使用反射来解决这种困境。
还不懂?
反射机制是不知道类是什么样的,它是根据类的类名,去获取一个实例,然后根据方法名去执行方法。好比说,一般情况下画一只老虎,问我得先知道老虎长什么样子才能画出来;有了反射机制,我只要知道“老虎”这个名字就能画出来。
什么是反射?
一句话概括就是:
反射就是把 Java 类中的各种成分映射成一个个的 Java 对象。