Java. Определение констант в интерфейсе

max аватар
110
Находится в разделах:

В Java разрешается объявлять и использовать константы в интерфейсах.  Используя такой подход, Вы гарантируете, что любой класс, который реализует интерфейс, будет иметь доступ к одной и той же константе.

 

info picture Необходимо запомнить одно правило, относительно объявления констант в интерфейсах. 

 

Они всегда должны быть  public static final.

 

Звучит просто, не так ли? После всего, интерфейсные константы ничем не отличаются от других констант, доступных из других мест и классов.  Любая переменная, определенная в интерфейсе - должна быть public. 

Значение константы нельзя изменить. Как только ей было присвоено значение, его уже нельзя модифицировать.  Присваивание происходит в самом интерфейсе (где определена константа), поэтому класс, реализующий интерфейс, может доступаться к ней и использовать ее, но только как значение "только для чтения".  

Выражение BAR = 27 не скомпилируется.


Конец
Уинстон Черчилль склоняется к тому, что постоянные усилия, а не сила или ум, — вот ключ к раскрытию нашего потенциала.

 

> Они всегда должны быть  public static final.

Я думаю эту фразу лучше сказать как:

Они всегда будут public static final и незачем это дополнительно указывать.

 

Во вторых  на моей практике часто попадаются интерфейсы тупо без методов а только с константами. Имплементить интерфейс ради констант считается плохим стилем, для этого лучше использовтаь import static.

А поскольку статические импорты можно применять и к обычным классам то лучше всего константы объявлять в публичных финальных классах у которых конструктор определён как приватный. Тогда можно гарантировать что от него не унаследуются.

Т.е.

 

Foo

 

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

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке