我有以下School
类,其中包含内部Office
类:
class School {
class Offcie {
Office() {
...
}
}
}
在另一个地方,我得到了一个名为mySchool
的School
的实例。
实例化Office
的正常方法是:
School mySchool = new School();
Office myOffice = mySchool.new Office();
但是如何使用java反射通过使用mySchool
实例来获得Office
的实例呢?
获取对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节™语言规格