#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, избыточное указание этих модификаторов так же допустимо.
Комментариев нет:
Отправить комментарий