Логика внутренних классов заключается в том, что если вы создаете внутренний класс во внешнем классе, это потому, что им нужно будет поделиться несколькими вещами, и поэтому имеет смысл для них иметь больше гибкости, чем «регулярные», классы.
Если в вашем случае нет смысла, чтобы классы могли видеть внутреннюю работу друг друга, что в основном означает, что внутренний класс мог бы просто быть обычным классом, вы может объявить внутренний класс как static class XYZ
. Использование static
будет означать, что они не будут делить состояние (и, например, new ABC().new XYZ()
не будет работать, и вам нужно будет использовать new ABC.XYZ()
. Но если это так, вам следует подумать о том, следует ли XYZ
действительно, является внутренним классом, и, возможно, он заслуживает своего собственного файла. Иногда имеет смысл создавать статический внутренний класс (например, если вам нужен небольшой класс, который реализует интерфейс, используемый вашим внешним классом, и это не будет полезно в любом месте). Но примерно в половине случаев это должно было быть сделано внешним классом.