java反射机制能否支持多重反射。如,动态invoke一个方法里还有一个invoke.若不能,有没有其它偏方可以实现这种效果?
经过试验是可以的。
代码:
// Main.java
class Main {
public void static main(String[] args) {
try {
Class<?> c = Class.forName(args[0]);
Object o = c.newInstance();
Method m = c.getMethod("doSth");
m.setAccessible(true);
m.invoke(o);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
// A.java
class A {
public void doSth() {
System.out.println("Inside A.doSth: using reflection to call B");
try {
Class<?> c = Class.forName("B");
Object o = c.newInstance();
Method m = c.getMethod("doOther");
m.setAccessible(true);
m.invoke(o);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
// B.java
class B {
public void doOther() {
System.out.println("Inside B");
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。