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