Страницы

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

пятница, 12 октября 2018 г.

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

В примере фрагмента определялся статический интерфейс для того, чтобы уведомлять активность о нажатиях:
static interface WorkoutListListener { void itemClicked(long id); };
Почему интерфейс статический? К примеру, если переменная статическая — она используется в единственном экземпляре для всех экземпляров класса, но что делают статические интерфейсы?


Ответ

Согласно 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, избыточное указание этих модификаторов так же допустимо.

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

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