Какой модификатор доступа я должен использовать для констант?
public static final
или же
private static final
Рассмотрим случаи, когда константы используются только из самого класса. Какой стиль предпочтительнее?
5 ответов
private
следует использовать при использовании нескольких классов. Вы можете использовать геттер, если вам нужно получить доступ к его значению.
public
действительно должен использоваться только тогда, когда у вас есть только один класс.
Если к константе нужно обращаться только в том классе, в котором она находится, используя
private static void
или даже просто
static final
будет работать, так как это не нужно вызывать в другом месте.
Однако, если для константы используется закрытый статический финал, рекомендуется использовать метод get для вызова константы, например:
private static final String CONSTANTVARIABLE = "Some constant";
public String getConstantVariable() {
return CONSTANTVARIABLE;
}
Если вам нужны только эти значения в классе, они должны быть private
, В общем, сделайте вещи как можно более недоступными и увеличивайте доступность только тогда, когда это необходимо.
Почему ты не используешь enum
для того же. Они на самом деле предназначены для того, чтобы служить цели constant
наряду с гибкостью, чтобы добавить функциональность позже, если это необходимо.
Просто посмотрите на следующие ссылки, чтобы сравнить константы с перечислениями, здесь и многие другие ссылки, которые вы получите. Я только что опубликовал некоторые из них.
Почему бы не быть ленивым, а просто сделать
static final
Я думаю, что лучше начать с "пакетного" доступа; Вы могли бы нуждаться в этом по крайней мере в модульном тестировании. Затем вы можете изменить его на публичный / частный или защищенный, если необходимо.
'private' обычно не требуется - вам редко нужно беспокоиться о том, что другие классы в том же пакете могут испортить этот класс.