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



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

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

在另一个地方,我得到了一个名为mySchoolSchool实例

实例化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节™语言规格

相关内容

  • 没有找到相关文章