[1]. 陈述反射的好处
传统方法操作字段,创建对象并调用对象的的构造方法在步骤上一定是比用反射来操作要简单。但是传统的方法来操作却有很多特殊的地方使得写出的程序无法通用化。这个时候,反射的好处就彰显出来。反射给出的程序框架适合任何类型的程序。一旦涉及到程序种特殊的地方在反射中全部采用字符串的形式进行了传参。
[2]. 举例说明
假设有一个Person类,现在采用传统的方法作如下操作
- class Person{
-
- public void paramMethod(String name, int age){
- System.out.println(name+"**"+age);
- }
- }
复制代码 测试代码
- Person p =new Person();
- p.paramMethod("Benjamin", 110);
复制代码 从这段代码看,类名Person、类中所使用的方法paramMethod必须硬编码写入程序。如果想改借助这段代码成调用Student类的xxx方法,是没有办法重用的。但是 通过反射可以做到这一点。
我在这里把类名Person、类中所使用的方法paramMethod称为采用使用传统方法中的涉及到的程序的个性化地方。那么这些个性化的地方在反射中采用字符串的形式进行了格式化。格式化之后,可以达到通用的效果。因此反射同样的一段代码,通过传入不同的字符串参数实现了对不同类名和不同方法名的操作。这样既可以做成通用的程序框架。我下面画了一个图来表示反射和传统方法的对应关系。
从图中可以看出,原本传统操作特殊的部分Perosn和parmaMethod都在反射中都变成了字符串的形式出现。这样变换字符串的内容就可以操作其他类的不同名的方法。这就是反射对传统程序的格式化和通用化。反射的这种功能为框架技术奠定了基础,即同样的一套程序可以操作用户未知的类和类中的方法。
结论:反射就是对传统方法操作对象的格式化
|
|