Обычный порядок применения модификаторов упоминаются в спецификации языка 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
Обновление : существует новаяинициатива « Руководства по стилю Java » для проектов в сообществе OpenJDK. Он также содержит рекомендации по порядку модификаторов, а также включает новыймодификатор по умолчанию Java 8.
public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp