2015-10-01 5 views

ответ

1

Если вам нужны только эти значения в классе, они должны быть private. В общем, сделать вещи как можно недоступными и только увеличивать доступность, когда это необходимо.

+2

Правда - но часто на практике полезно сделать константы доступными также для модульных тестов для класса, так что вы в конечном итоге сделаете константу видимой только для пакета (ни частной, ни публичной) –

1

private следует использовать при использовании нескольких классов. Вы можете использовать getter, если вам нужно получить доступ к его значению.

public следует использовать только в том случае, если у вас есть только один класс.

+0

Вопрос о константах, и вы не может иметь сеттер для константы (и вам не нужен геттер). Не уверен, что вы имеете в виду, используя несколько классов или только один класс. –

0

Почему бы не быть ленивым, и просто сделать

static final 

Я думаю, что лучше начать с «пакетом» доступа; вам, возможно, понадобилось бы это в модульном тесте. Тогда вы можете изменить его на общественный/частный или защищенный, если нужно.

«частный» обычно не требуется - вам редко приходится беспокоиться о том, что другие классы под одной и той же упаковкой могут испортить этот класс.

0

Почему вы не используете enum для того же. Они на самом деле предназначены для использования в целях constant наряду с гибкостью для добавления функций позже, если это необходимо.

Просто взгляните на следующие ссылки на compare constants with enums, here и много больше ссылок вы будете получать. Я только что опубликовал некоторые из них.

0

Если константа требуется только доступ в классе он находится, используя

private static void 

или даже просто

static final 

будет работать, так как не требуется, чтобы называться в другом месте.

Однако, если частный статический окончательный используется для постоянной, это хорошая практика, чтобы использовать поглотитель для вызова константы, например:

private static final String CONSTANTVARIABLE = "Some constant"; 

public String getConstantVariable() { 
    return CONSTANTVARIABLE; 
} 
Смежные вопросы