黑马程序员技术交流社区

标题: Java 能否多重反射 [打印本页]

作者: 三生石    时间: 2014-3-5 21:10
标题: Java 能否多重反射
Java反射机制能否支持多重反射。
如,动态invoke一个方法里还有一个invoke
求大牛详解!
若不能,有没有其它偏方可以实现这种效果?


作者: 榨菜    时间: 2014-3-5 22:35
  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. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2