Це питання стосується того, щоб зробити вкладений клас у Java статичним класом вкладених або внутрішнім вкладеним класом. Я шукав тут і в Stack Overflow, але насправді не міг знайти жодних питань щодо дизайнерських наслідків цього рішення.
Я знайшов запитання про різницю між статичними та внутрішніми вкладеними класами, що мені зрозуміло. Однак я ще не знайшов переконливої причини коли-небудь використовувати статичний вкладений клас на Java - за винятком анонімних класів, які я не вважаю цим питанням.
Ось моє розуміння ефекту від використання статичних вкладених класів:
- Менше з'єднання: ми зазвичай отримуємо менше з’єднання, оскільки клас не може безпосередньо отримати доступ до атрибутів зовнішнього класу. Менше з'єднання зазвичай означає кращу якість коду, простіше тестування, рефакторинг тощо.
- Одномісний
Class
: Навантажувач класів не повинен опікуватися новим класом щоразу, ми створюємо об'єкт зовнішнього класу. Ми просто отримуємо нові об'єкти для одного класу знову і знову.
Щодо внутрішнього класу, я, як правило, вважаю, що люди розглядають доступ до атрибутів зовнішнього класу як профі. Я прошу відрізнятись у цьому відношенні з точки зору дизайну, оскільки цей прямий доступ означає, що ми маємо високу зв'язок, і якщо ми коли-небудь захочемо витягнути вкладений клас у його окремий клас вищого рівня, ми можемо це зробити лише після суттєвого повороту переходить у статичний вкладений клас.
Отже, моє запитання зводиться до цього: чи помиляюсь я, вважаючи, що доступ до атрибутів, доступних нестатичним внутрішнім класам, призводить до високої зв'язку, отже, до нижчої якості коду, і що я випливаю з цього, що (неанонімні) вкладені класи повинні взагалі бути статичним?
Або іншими словами: Чи є переконлива причина, чому можна віддати перевагу вкладеному внутрішньому класу?