Какой модификатор доступа я должен использовать для констант?

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

Другие вопросы по тегам