A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 三生石 中级黑马   /  2014-3-5 21:10  /  926 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

1 个回复

倒序浏览
  1. interface Animal{
  2.         void eat();
  3. }

  4. public class Test {

  5.         /**
  6.          * 在方法中定义方法,我想到的只有内部类。 所以我先定义一个接口Animal  然后方法的内部类Person继承了Animal。
  7.          *
  8.          * 在Test类中中method方法中 定义Person类 并且返回的是Person的对象。
  9.          *
  10.          * 然后在main函数用反射的方法获得Test的方法-----method方法 ---执行--- 获得内部类引用。
  11.          * Animal animal = (Animal) methodTest.invoke(null);
  12.          *
  13.          * 然后对这个再进行反射,然后执行里面的eat方法。
  14.          *
  15.          * 总共实现了两次invoke
  16.          *
  17.          * 打印出:Person---to eat
  18.          *
  19.          * 还请多多指教
  20.          */
  21.         public static void main(String[] args) throws  Exception {
  22.                 // TODO Auto-generated method stub

  23.                 Method methodTest = Test.class.getMethod("method");
  24.                 Animal animal = (Animal) methodTest.invoke(null);
  25.                
  26.                 Method methodAnimal = animal.getClass().getMethod("eat");
  27.                 methodAnimal.invoke(animal);
  28.         }
  29.         //在方法里面定义了一个Person类
  30.         public static Animal method(){
  31.                
  32.                  class Person implements Animal{

  33.                         @Override
  34.                         public void eat() {
  35.                                 System.out.println("Person---to eat");
  36.                         }
  37.                 }
  38.                 Person person = new Person();
  39.                 return person;
  40.         }
  41. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马