开发者社区 问答 正文

Java 能否多重反射

java反射机制能否支持多重反射。如,动态invoke一个方法里还有一个invoke.若不能,有没有其它偏方可以实现这种效果?

展开
收起
蛮大人123 2016-03-04 23:48:59 2159 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    经过试验是可以的。
    代码:

    // 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");
        }
    }
    2019-07-17 18:52:47
    赞同 展开评论
问答分类:
问答标签:
问答地址: