Как вы определили MyRelatedClass
, вам нужно иметь экземпляр MyClass
, чтобы иметь возможность получить доступ / создать экземпляр этого класса.
Обычно в Java этот шаблон используется, когда экземпляру MyRelatedClass
требуется доступ к некоторым полям экземпляра MyClass
(отсюда ссылки на «включающий экземпляр» в предупреждении компилятора).
Что-то вроде этого должно скомпилироваться:
public void doStuff() {
MyClass mc = new MyClass();
MyRelatedClass data = mc.new MyRelatedClass();
}
Однако, если экземпляру MyRelatedClass
не требуется доступ к полям включающего его экземпляра (к полям MyClass
), вам следует рассмотреть определение MyRelatedClass
как статический класс, это позволит исходному коду, который вы опубликовали, скомпилировать.
Разница в наличии вложенного класса (того, что вы опубликовали) и статического вложенного класса (a static class
в class
) это то, что в первом случае вложенный класс принадлежит экземпляру родительского класса, в то время как последний не имеет такого отношения - только отношение логическое / пространство имен.