Что такое статический интерфейс в Java? - PullRequest
37 голосов
/ 04 декабря 2011

Я читал через интерфейс Map.Entry, когда заметил, что это «статический» интерфейс. Я не совсем понял, что такое статический интерфейс и чем он отличается от обычного интерфейса?

public static interface Map.Entry<K,V>

Это определение интерфейса. Документы здесь: http://docs.oracle.com/javase/6/docs/api/java/util/Map.Entry.html

Ответы [ 2 ]

35 голосов
/ 05 декабря 2011

Мне любопытно, что это не внутренний интерфейс.

Модификатор static разрешен только для вложенных классов или интерфейсов.В вашем примере Entry вложено в интерфейс Map.

Для интерфейсов модификатор static фактически необязателен.Различие не имеет смысла для интерфейсов, так как они не содержат кода, который в любом случае мог бы получить доступ к внешнему this.

4 голосов
/ 04 декабря 2011

Статический внутренний интерфейс и внутренний интерфейс одинаковы, все правила доступа такие же, как и у внутреннего статического класса. Таким образом, внутренний интерфейс может быть доступен, только если у вас есть доступ к его родительскому классу / интерфейсу. В случае ниже у вас будет доступ к интерфейсу B только из пакета интерфейса A, потому что A имеет модификатор доступа по умолчанию. Кстати: интерфейс B может быть статическим или нет.

 interface A {
    void testA();
    public interface B {
        void testB();
    }
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...