使用java反射来获取内部类的实例

时间:2014-04-28 14:40:14

标签: java reflection

我有以下School类,其中包含内部 Office类:

class School {
    class Offcie {
        Office() {
          ...
        }
    }
}

在另一个地方,我得到School名为mySchool实例

实例化Office的常规方法是:

School mySchool = new School();
Office myOffice = mySchool.new Office();

但是如何使用 java反射来使用Office实例获取mySchool实例

1 个答案:

答案 0 :(得分:0)

获取对Office无参数Constructor的引用,并使用单个参数School实例调用它。

Constructor<Office> constructor = Office.class.getDeclaredConstructor(School.class);
Office office = constructor.newInstance(new School()); // or your instance

javadoc

中对此进行了解释
  

如果构造函数的声明类是非静态的内部类   上下文,构造函数的第一个参数需要是   封闭实例;请参阅Java™语言的第15.9.3节   说明书