Быстрый вопрос Java о частных статических конечных ключевых слов для полей - PullRequest
31 голосов
/ 14 мая 2010

Я объявляю поле:

private static final String filename = "filename.txt";

Во-первых, имеет ли значение порядок private static final? Если нет, существует ли стандартная принятая последовательность или соглашение?

Во-вторых, filename в моем приложении исправлено. Разве это лучше всего было хранить его стоимость?

Ответы [ 7 ]

49 голосов
/ 14 мая 2010

Я использую Checkstyle с Eclipse, что приводит к предупреждению, если объявление находится в порядке, отличном от указанного вами, со ссылкой на Спецификацию языка Java (JLS). Например,

private final static String filename = "filename.txt";

Результаты в

'static' modifier out of order with the JLS suggestions.

У них есть эта страница , которая перечисляет ожидаемый ими порядок, хотя, следуя ссылкам на этой странице до JLS , я не вижу ничего, что могло бы подтвердить их утверждение предлагаемый заказ.

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

23 голосов
/ 14 мая 2010
  1. Нет. Но это та последовательность, которую я обычно вижу.

  2. Это разумный выбор, но некоторые предпочитают файл конфигурации, либо Свойства , либо другой формат файла (например, XML). Таким образом, вы можете изменить имя файла без перекомпиляции.

13 голосов
/ 14 мая 2010

В Java принято давать константы (static final значения) в верхнем регистре, поэтому я бы написал:

private static final String FILENAME = "filename.txt";

См. Также Соглашения о коде для языка программирования Java . (Это соглашения Sun для кода, которые используют большинство программистов на Java).

5 голосов
/ 01 февраля 2014

Наиболее приемлемый порядок этих ключевых слов - private static final. Также вы можете запомнить порядок этих ключевых слов, используя шаблон PSF , который:

P => частный / публичный / защищенный
S => статический / абстрактный / ...
F => окончательный

3 голосов
/ 27 сентября 2015

Чтобы завершить хороший ответ по @Hobo выше по текущей ссылке

8.1.1. Модификаторы класса

Объявление класса может включать модификаторы класса.

     ClassModifier:
         (one of) 
         Annotation public protected private 
         abstract static final strictfp

[...]

Если в классе появляются два или более (различных) модификатора класса декларации, то обычно, хотя и не обязательно, они появляются в порядке, соответствующем указанному выше в производстве для ClassModifier.

3 голосов
/ 12 октября 2013

см .: http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.3.1

8.3.1 Модификаторы поля

FieldModifiers:
FieldModifier
FieldModifiers FieldModifier

FieldModifier: один из
Аннотация государственная охраняемая частная
статический окончательный переходный, летучий

...

Если в объявлении поля присутствуют два или более (различных) модификатора поля, то обычно , хотя и не обязательно, они появляются в порядке, согласованном с указанным выше при создании FieldModifier. 1019 *

3 голосов
/ 14 мая 2010
  1. Порядок не имеет значения, но вы всегда можете поиграть с ним - есть только 6 возможностей для тестирования.

  2. Я не знаю ни о каких соглашениях, хотя сначала я поставил модификатор видимости (общедоступный / частный / защищенный), чтобы вы могли увидеть его и выстроиться в линию.

  3. Если это исправлено, то вы можете сделать это, но я всегда думаю, что что-то является константой, чтобы потом выяснить (например, во время тестирования), что я хочу передать ее. Файл свойств работает в этом случае и требует минимальных усилий для настройки.

...