我有以下School
类,其中包含内部 Office
类:
class School {
class Offcie {
Office() {
...
}
}
}
在另一个地方,我得到School
名为mySchool
的实例。
实例化Office
的常规方法是:
School mySchool = new School();
Office myOffice = mySchool.new Office();
但是如何使用 java反射来使用Office
实例获取mySchool
的实例?
答案 0 :(得分:0)
获取对Office
无参数Constructor
的引用,并使用单个参数School
实例调用它。
Constructor<Office> constructor = Office.class.getDeclaredConstructor(School.class);
Office office = constructor.newInstance(new School()); // or your instance
中对此进行了解释
如果构造函数的声明类是非静态的内部类 上下文,构造函数的第一个参数需要是 封闭实例;请参阅Java™语言的第15.9.3节 说明书