06年写的
在使用匿名内部类时,当使用了反射机制来调用其中的方法就会出现访问异常,这是在前几天写程序时遇到的,所以在写匿名内部类时一定要注意是否在其它地方使用了反射调用。下面给出部份代码来说明此问题。
public classSuperTest {public voidhello() {
System.out.println("Hello from SuperTest");
}
}public classExec {public static voidrun(SuperTest target) {
System.out.println();
System.out.print("base class > ");
run(target, SuperTest.class, "hello"); //1 这里可以正常执行
System.out.print("obj class > ");
run(target, target.getClass(),"hello"); //2 这里可能产生异常
}static voidrun(Test1 target, Class cls, String method) {try{
cls.getMethod(method,null).invoke(target, null);
}catch(Exception x) {
System.out.println(x);
}
}
}public classTest {public static voidmain(String[] args) {
Exec.run(newSuperTest() {publ