首页 > 代码库 > 反射机制

反射机制

反射机制:

反射机制是能够帮助我们把代码变得更加灵活,可扩展性更高,俗称“软编程、软写法”。例如:有一个文件里面有一些值,想要把这些值赋值到一个Student类的属性中,按照以前所学到的知识点,只能是通过文件流将文件里的值读取出来,然后再通过set方法将这些值都赋给Student类的属性。但是,这种方式是将代码写死了,在这之后会有一个问题就是如果文件里的内容发生变动,或者要把这个Student类更换成Dog类的话,就要重新修改代码。程序写好了部署到服务器上运行了,总不能时不时就打开来修改吧。
示意图:

技术分享

那么要解决这个问题,就得使用到反射机制,在怎么使用反射机制解决这个问题之前,我们先学习一个类,这个类名叫Class,注意这是类不是class关键字。每一个类都能获得Class对象,通过这个对象就可以操作那个类。例如:Dog类可以获得Class对象,通过这个对象可以构建Dog类的对象,还可以对Dog类的属性进行赋值,对方法能够进行调用等等,还能获得这个类的所有的信息,比如这个类的父类是哪个,实现了什么接口,路径在哪等等。
获得Class对象的方法有三种,但是其中两种是死写法,一种是软写法,软写法是因为使用的字符串描述的类名,字符串是可以变动的,要更改类的时候只需要更改字符串即可。
代码示例:
技术分享

使用这个对象可以获得Test类的信息:
技术分享
运行结果:
技术分享

使用这个对象可以获得Test类的成员:
技术分享

运行结果:
技术分享

使用这个对象还可以对某个类的的属性进行赋值,还能调用方法和构造器,还能给方法和构造器传递参数。我们做个试验:声明一个Student类,在这个类里写一些属性、方法和构造器,然后通过Test类来进行赋值、调用和传递参数。
Student类代码示例:
技术分享

Test类代码示例:
技术分享

运行结果:

技术分享

现在我们就可以运用以上的知识点来解决一开始的那个问题了,先编辑一个文本里面写一些属性值,然后再写一个Teacher类写上对应的属性,然后将属性进行封装,然后写一个Test类通过Class对象来对Teacher类的属性进行赋值。
文件内容:
技术分享
Teacher类代码示例:

技术分享
技术分享

Test类代码示例:

技术分享

运行结果:

技术分享

?

反射机制