public static final
илиКакой модификатор доступа следует использовать для констант?
private static final
Учитывая случаи, когда константы используются только из самого класса. Какой стиль предпочтительнее?
public static final
илиКакой модификатор доступа следует использовать для констант?
private static final
Учитывая случаи, когда константы используются только из самого класса. Какой стиль предпочтительнее?
Если вам нужны только эти значения в классе, они должны быть private
. В общем, сделать вещи как можно недоступными и только увеличивать доступность, когда это необходимо.
Правда - но часто на практике полезно сделать константы доступными также для модульных тестов для класса, так что вы в конечном итоге сделаете константу видимой только для пакета (ни частной, ни публичной) –
private
следует использовать при использовании нескольких классов. Вы можете использовать getter, если вам нужно получить доступ к его значению.
public
следует использовать только в том случае, если у вас есть только один класс.
Вопрос о константах, и вы не может иметь сеттер для константы (и вам не нужен геттер). Не уверен, что вы имеете в виду, используя несколько классов или только один класс. –
Почему бы не быть ленивым, и просто сделать
static final
Я думаю, что лучше начать с «пакетом» доступа; вам, возможно, понадобилось бы это в модульном тесте. Тогда вы можете изменить его на общественный/частный или защищенный, если нужно.
«частный» обычно не требуется - вам редко приходится беспокоиться о том, что другие классы под одной и той же упаковкой могут испортить этот класс.
Почему вы не используете enum
для того же. Они на самом деле предназначены для использования в целях constant
наряду с гибкостью для добавления функций позже, если это необходимо.
Просто взгляните на следующие ссылки на compare constants with enums, here и много больше ссылок вы будете получать. Я только что опубликовал некоторые из них.
Если константа требуется только доступ в классе он находится, используя
private static void
или даже просто
static final
будет работать, так как не требуется, чтобы называться в другом месте.
Однако, если частный статический окончательный используется для постоянной, это хорошая практика, чтобы использовать поглотитель для вызова константы, например:
private static final String CONSTANTVARIABLE = "Some constant";
public String getConstantVariable() {
return CONSTANTVARIABLE;
}
'private' Если он не нужен вне класса, то зачем выставлять его? –