Почему внутренние классы не имеют статических (нефинальных) полей и методов?Внутренние классы Java и статические методы или поля
Этот вопрос был опубликован раньше, но опубликованные ответы были: это дизайнерское решение или потому что внутренние классы происходят в контексте внешнего класса и не могут объявлять статические методы.
Однако эти ответы не уточняют мой вопрос. Каковы были бы последствия использования статических полей и методов для внутренних классов? Я предполагаю, что оба ограничения связаны. Поскольку для статических методов потребуется доступ к другим статическим методам и не конечным статическим переменным внутреннего класса или даже из внешнего класса (чтобы иметь возможность изменять внутренние состояния), это приведет к тому, что внутренний класс будет вести себя как статический. Однако JVM может ограничить доступ со статических методов во внутренних классах к статическим методам и данным внутри внутреннего класса. Однако возникает вопрос: почему мы не можем объявлять статические не конечные переменные внутри внутренних классов?
Этот дизайн или есть проблемы?
Сердечных приветы
Основная проблема заключается в том, что это не имеет смысла. Внутренний класс по своей сути не является статичным; он привязан к экземпляру внешнего класса. Становление методов во внутреннем классе просто бессмысленно. –
Вы можете объявлять статические члены внутри внутреннего класса. Класс просто должен быть статическим внутренним классом. –
@BalkrishnaRawool OP спрашивает о внутренних классах (нестатические вложенные классы). – Pshemo