Можем ли мы определить интерфейс в интерфейсе?
Мне нравится знать, можно ли определить интерфейс в интерфейсе.
как
interface abc {
void show();
public interface xyz {
void read();
}
}
Это был вопрос, заданный в интервью. Любое использование в реальном времени этого.
Ответы
Ответ 1
Да, мы можем сделать это. Определение вложенного интерфейса в Java следующее:
Вложенный интерфейс - это любой интерфейс, объявление которого происходит в теле другого класса или интерфейса. Интерфейс верхнего уровня - это интерфейс, который не является вложенным.
Обратитесь к этому для более.
В дальнейшем...
Одной из причин может быть то, что внешний интерфейс имеет метод, который принимает реализацию обратного вызова в качестве аргумента. В этом случае вложенный интерфейс - это контракт, который должен реализовать метод обратного вызова. Я не вижу смысла объявлять этот интерфейс обратного вызова на верхнем уровне.
public interface Processor {
void execute(NotificationListener listener);
interface NotificationListener {
void processingCompleted();
}
}
Еще одно хорошее чтение на сайте Sun по этой теме здесь
В частности, обратите внимание, что при реализации интерфейса вам не требуется реализовывать какие-либо интерфейсы, вложенные в него.
Ответ 2
Конечно. Посмотрите на SOURCE CODE для интерфейса java.util.Map. Интерфейс карты содержит вложенный интерфейс ввода.
Интересно, что в исходном коде просто сказано
interface Entry <K,V> {
..
}
но javadoc говорит
public static interface Map.Entry<K,V>
Я предполагаю, что это связано с тем, что вложенные интерфейсы неявно "public static", хотя исходный код этого не говорит. (Но методы внутри интерфейса - это публичность публичности и не могут быть статическими, т.е. В интерфейсах разрешены только методы экземпляра).
-dbednar 2013-07-02
Ответ 3
Да.
Вы могли бы протестировать это для себя и получить окончательный, безответный, безрисковый ответ через 30 секунд.
Ожидание возможно навсегда для возможного неправильного ответа на форуме - это не рациональный способ запроса.
Ответ 4
Мы используем его в нашем приложении,
Интерфейс внутри интерфейса, используя это в основном для функциональных констант,
так что случайно никакие другие не создадут новые константы в другом месте проекта, связанные с этим Service1.
Пример Код:
Public interface Service1{
public interface ServiceInter1{
public Interface In{
Declare your own constants
}
public Interface Out{
Declare your own constants
}
}
}
Ответ 5
да, мы можем определить.
Интерфейс внутренней карты определяет ввод, как показано ниже.
открытый интерфейс Карта {
/**
* Map.Entry is a key/value mapping which is contained in a Map.
*/
public static interface Entry<K, V> {
.....some loigic
}
}
Ответ 6
Реальное использование этого - упростить сложную систему, предоставляя интерфейс Facade. - Проверьте шаблон проектирования фасада.
https://en.wikipedia.org/wiki/Facade_pattern