Подтвердить что ты не робот

Быстрый вопрос Java о частных статических конечных ключевых словах для полей

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

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

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

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

4b9b3361

Ответ 1

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

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

приводит к

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

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

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

Ответ 2

  • Нет. Но это та последовательность, которую я обычно вижу.

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

Ответ 4

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

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

Ответ 5

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

  • Я не знаю какого-либо соглашения, хотя сначала ставлю модификатор видимости (public/private/protected), чтобы вы могли его разглядеть, и он выстраивается в линию.

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

Ответ 6

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

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

FieldModifiers:
  FieldModifier
  FieldModifiers FieldModifier

FieldModifier: один из
  Annotation public protected private
  статический окончательный переходный летучий

...

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

Ответ 7

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

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

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

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

[...]

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