Да, интерфейс можно определить внутри класса как статический вложенный интерфейс. Это валидная Java-фишка, которая позволяет тебе инкапсулировать определения интерфейсов на уровне класса.
Статический вложенный интерфейс имеет ограниченную доступность. Только охватывающий класс может напрямую обращаться к этому интерфейсу и использовать его. Это даёт:
staticpublic class OuterClass {
public static interface NestedInterface {
void doSomething();
}
public void useNestedInterface(NestedInterface obj) {
obj.doSomething();
}
}
Подумай об определении вложенного интерфейса, когда хочешь:
Если тебе нужно, чтобы внешние классы реализовывали твой интерфейс, лучше определить его на верхнем уровне, а не вкладывать в класс — так он будет лучше доступен и это соответствует стандартным паттернам проектирования.
Вложенный интерфейс, определённый внутри класса, должен быть объявлен как static, чтобы быть корректным членом этого класса.
Новый — ещё не проверен сообществом
Вы