重温经典api-Java的反射API接口

Java 的反射机制是使其具有动态特性的非常关键的一种机制, 也是在JavaBean 中广泛
应用的一种特性。
【重温经典api-Java的反射API接口】运用JavaBean 的最常见的问题是: 根据指定的类名, 类字段名和所对应的数据, 得
到该类的实例。
Java的反射的作用
让我们可以于运行时加载、 探知、 使用编译期间完全未知的classes。 换句话说, Java程序可以加载一个运行时才得知名称的class, 获悉其完整构造(但不包括methods定义) 并生成其对象实体、 或对其fields设值、 或唤起其methods1 。
反射和“正射”
? 既然有反射 那就有“正射”
? 对比一下:
? 有一个class Test 有无参构造方法
? 获取实例的比较:
? “正” : 由类名直接使用关键字new来获得 语法:new Test()
? 反射: 未知类名 运行时获得类型名: 例如:
Class newoneClass = Class.forName(args【i】 );
Object o = newoneClass.newInstance();
args【i】 =“test”
当然参数也可以由配置文件获得
反射和“正射”
? 既然有反射 那就有“正射”
? 对比一下:
? 有一个class Test 不带无参构造 或者不准备用无参构造来实例化
? 获取实例的比较:
? “正” : 由类名直接给予参数使用关键字new来获得 语法: newTest(objectargs[])
? 反射: 未知类名 未知调用的构造方法 (必须是公共的构造方法)运行时获得类型名和构造参数:
例如: 先获得类类型:
Class newoneClass = Class.forName(args【i】 );
再由参数类型列表获得要调用的构造方法:
Constructor con = newoneClass .getConstructor(ClassArgs);
再由构造方法获得实例:
Object o = con.newInstance(objectargs[]);
当然参数也可以由配置文件获得反射和“正射”
? 有一个class Test
? 调用方法的比较:
? “正” : 直接给予参数调用: obj.methodname(objectargs[])此时方法名已知 参数类型已知
? 反射: 未知方法名 参数个数 参数类型: 在运行时根据参数传递过来的参数名, 参数列表获得要调用的Method m =
? newOneClass.getMethod(“methodname”,classA
rg); 然后给予相应实参调用:m.invoke(obj,objectargs[]);

    推荐阅读