Звичайний порядок застосування модифікаторів згадуються в специфікації мови Java (а не в Специфікації Java Virtual Machine) , наприклад , для класу модифікаторів ви знайдете наступне визначення (екстракт):
ClassModifiers:
ClassModifier
ClassModifiers ClassModifier
ClassModifier: one of
Annotation public protected private
abstract static final strictfp
[....]
Якщо в декларації класу з'являються два або більше модифікаторів класу (окремі), то вони, як правило, не вимагаються, щоб вони з'являлися в порядку, що відповідає тому, що показано вище у виробництві для ClassModifier. (невеликий текст внизу абзацу!)
Ви знайдете це речення в кількох інших місцях, де вказано використання модифікаторів, наприклад тут для модифікаторів поля.
Оновлення : я замінив "вказане / рекомендоване" на "звичайне", щоб зробити це прийнятною відповіддю. Враховуйте це, якщо ви читаєте коментарі ;-) (дякую @EJP, щоб це було зрозуміло) - Тим не менш, я б рекомендував користуватися звичайним замовленням.
Google також рекомендує використовувати звичайний порядок, зазначений у специфікації Java.
public / protected / private
abstract
static
final
transient
volatile
synchronized
native
strictfp
Оновлення :для проектів у спільноті OpenJDKіснує новаініціатива " Настанови стилю Java ". Він також має рекомендації щодо порядку модифікаторів, а також включає новиймодифікатор за замовчуванням Java 8.
public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp