Почему статический вложенный интерфейс будет использоваться в Java? - PullRequest
230 голосов
/ 16 сентября 2008

Я только что нашел статический вложенный интерфейс в нашей базе кода.

class Foo {
    public static interface Bar {
        /* snip */
    }
    /* snip */
}

Я никогда не видел этого раньше. Оригинальный разработчик недоступен. Поэтому я должен спросить ТАК:

Какова семантика статического интерфейса? Что изменится, если я уберу static? Зачем кому-то это делать?

Ответы [ 11 ]

0 голосов
/ 16 сентября 2008

Обычно я вижу статические внутренние классы. Статические внутренние классы не могут ссылаться на содержащие классы, в отличие от нестатических классов. Если вы не столкнетесь с какими-то коллизиями пакетов (там уже есть интерфейс под названием Bar в том же пакете, что и Foo), я думаю, я бы сделал это своим собственным файлом. Это также может быть дизайнерское решение для обеспечения логической связи между Foo и Bar. Возможно, автор предполагал, что Bar будет использоваться только с Foo (хотя статический внутренний интерфейс этого не навязывает, просто логическое соединение)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...