Страницы

Поиск по вопросам

понедельник, 9 декабря 2019 г.

Для чего используется статический интерфейс?

#java #android


В примере фрагмента определялся статический интерфейс для того, чтобы уведомлять
активность о нажатиях:

static interface WorkoutListListener {
    void itemClicked(long id);
};


Почему интерфейс статический? К примеру, если переменная статическая — она используется
в единственном экземпляре для всех экземпляров класса, но что делают статические интерфейсы?
    


Ответы

Ответ 1



Согласно JLS 8.5.1. Static Member Type Declarations: A member interface is implicitly static (§9.1.1). It is permitted for the declaration of a member interface to redundantly specify the static modifier. Интерфейс - член класса, неявно является статическим. При объявлении интерфейса - члена класса допускается избыточное указание модификатора static. Конструкции public class SomeClass { abstract static interface Interface { public abstract void foo(); } } и public class SomeClass { interface Interface { void foo(); } } эквивалентны, т.к. интерфейс всегда abstract, вложенный интерфейс всегда static, а методы интерфейса всегда public. До java 8 методы интерфейса всегда были abstract, в восьмой версии метод интерфеса может быть static или default, в отсутствие этих модификаторов abstract подразумевается. Явное указание модификаторов допустимо, но не приветствуется с точки зрения стиля. Поля в интерфейсе всегда public, static и final, избыточное указание этих модификаторов так же допустимо.

Комментариев нет:

Отправить комментарий