В качестве дополнительного примечания, учитывая, что на ваш основной вопрос был дан ответ - часто люди объявляют внутренние классы, как в вашем примере выше, не задумываясь о том, могут ли они вместо этого быть статическими внутренними классами. 1003 *
По моему опыту, подавляющее большинство (неанонимных) внутренних классов могут быть статическими, поскольку им не требуется доступ к членам экземпляра родительского класса. Объявление внутреннего класса как статического в этом случае является более эффективным (поскольку среда выполнения не должна определять новый класс для каждого родительского экземпляра), менее запутанным (начиная с new TestClass().new InnerClass().getClass() != new TestClass().new InnerClass().getClass()
) и более простым для создания экземпляров, если у вас нет подходящий экземпляр TestClass
handy.
Так что, если это относится к вам, вы можете (и, возможно, должны) объявить свой внутренний класс таким образом:
public class TestClass {
public static class InnerClass { }
}
и тогда вы можете просто создать его экземпляр как new TestClass.InnerClass()
.
(Если вам нужно получить доступ к полям члена из InnerClass, просто проигнорируйте все это, конечно!)