利用反射机制,获得Employee的名字
public static void fn() {
Employee e = new Employee("hssdst",50,new Date());
Employee e2 = new Employee("dfsfds",50,new Date());
try {
Method m1 = Employee.class.getMethod("getName");
Method m2 = Employee.class.getMethod("raiseSalary", double.class);
String n = (String) m1.invoke(e);
System.out.println(n);//hssdst
} catch (Exception e1) {
e1.printStackTrace();
}
}
由于invoke()方法的参数和返回值必须的是object类型。这就导致必须经过多次的类型转换才能得到想要的类型,这样会导致编译器错过检查代码的机会。可能到下工程的FT阶段才会发现错误。并且,利用反射获得方法指针的代码要比仅仅直接调用方法慢一些。
因此,在必要的时候使用Method,其他情况使用接口或者内部类比较好。
注:使用接口进行回调比使用Method对象的回调功能的代码执行速度更快,更易维护