объявление атрибутов класса, порядок свойств атрибутов (final, private, static, type) - PullRequest
3 голосов
/ 18 февраля 2011

Я пытаюсь найти документацию о том, как лучше всего упорядочить свойства атрибута класса, такие как private / protected / public, final, static, type.

Я выложуПример, чтобы понять, что я имею в виду.

class A {

  public final static int FOO = 3;

  final public static int FOO = 3;

}

Хорошо, я предполагаю, что тип attrbiute (int, String, char) идет перед именем атрибута.

Мое настоящее сомнение - когда я пытаюсь позиционировать static, final и v

Ответы [ 5 ]

7 голосов
/ 18 февраля 2011

В спецификации языка сказано, что модификаторы должны идти перед типом , поэтому int стоит последним. Модификаторы включают параметры типа, аннотации, модификаторы доступа (приватные, защищенные, публичные), static, final, synchronized, strictfp, volatile, transient и они (из "что позволяет компилятор") ) может прийти в любом порядке.

Несколько дней назад я сделал поиск в Google, и static final гораздо чаще, чем final static, так что это помогает упорядочить их: -)

Я думаю, что в общем случае этот порядок модификаторов наиболее распространен:

  1. Аннотации
  2. параметры типа
  3. модификаторы доступа
  4. static
  5. final
  6. transient (только для полей)
  7. volatile (только для переменных)
  8. synchronized (только для методов)

Я никогда не использовал strictfp или native, но, думаю, я бы поставил их вокруг synchronized.

2 голосов
/ 18 февраля 2011

Вы можете принять порядок по умолчанию в качестве порядка, указанного в спецификации языка Java.http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#29882

1 голос
/ 09 января 2013

Когда я забочусь, я заказываю в соответствии с checkstyle's ModifierOrder check [1] (цитируя со связанной страницы):

Проверяет, что порядок модификаторов соответствует предложениям в спецификации языка Java,разделы 8.1.1, 8.3.1 и 8.4.3.Правильный порядок:

  1. открытый
  2. защищенный
  3. частный
  4. аннотация
  5. статический
  6. окончательный
  7. переходный процесс
  8. энергозависимый
  9. синхронизированный
  10. собственный
  11. strictfp

[1]http://checkstyle.sourceforge.net/config_modifier.html

0 голосов
/ 18 февраля 2011

Порядок модификаторов поля (класса, метода) не имеет значения.Они просто флаги, когда мы смотрим на сигнатуру метода.

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

Но, опять же, порядок не влияет на байт-код.Забудьте про микрооптимизацию;)

0 голосов
/ 18 февраля 2011

Ответили на свой вопрос:

частный / защищенный / общедоступный, статический, окончательный, тип

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...