Подтвердить что ты не робот

Что такое статический интерфейс в java?

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

public static interface Map.Entry<K,V>

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

4b9b3361

Ответ 1

Мне интересно, когда это не внутренний интерфейс.

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

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

Ответ 2

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

 interface A {
    void testA();
    public interface B {
        void testB();
    }
 }