扫码关注官方订阅号
Java反射机制能否支持多重反射。
如,动态invoke一个方法里还有一个invoke
求大牛详解!
若不能,有没有其它偏方可以实现这种效果?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
我试验了一下,这是没有任何问题的。
代码:
// 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"); } }
只要是签名合法的方法的字节码都是可以invoke的,和方法中的字节码具体做什么没有关系也没有限制。
但是你要想好为什么这么做。
Greenspun's tenth rule of programming:
Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
当然可以。只要你能看懂其间多次反射的逻辑。。。。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我试验了一下,这是没有任何问题的。
代码:
只要是签名合法的方法的字节码都是可以invoke的,和方法中的字节码具体做什么没有关系也没有限制。
但是你要想好为什么这么做。
Greenspun's tenth rule of programming:
当然可以。只要你能看懂其间多次反射的逻辑。。。。