Какое максимальное количество модификаторов может содержать метод java?

Есть несколько модификаторов, используемых перед объявлением метода Java, таких как public, static, synchronized и т.п.

Я просто хочу знать максимальное количество модификаторов или все комбинации модификаторов, которые может содержать метод java.

2 ответа

См. Спецификацию языка Java, глава 8.4:

MethodDeclaration:
  {MethodModifier} MethodHeader MethodBody

а также:

 MethodModifier:
 (one of) 
 Annotation public protected private 
 abstract static final synchronized native strictfp

Вы не можете смешивать:

  • модификаторы доступа (так что вы получили один из этих 3, или ни один для защищенного пакета)
  • абстрактный, статичный, окончательный
  • абстрактный с (приватный, статический, финальный, нативный, строгий, синхронизированный)
  • и наконец: родной и строгий

Взяв все это вместе (спасибо пользователю Andreas за отличную формулировку):

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

 [ public | protected | private] static final synchronized [native | strictfp]

Итак, максимальное количество 5; и 6 различных комбинаций этих 5 ключевых слов.

Согласно спецификации Java, §8.4.3. Модификаторы метода, общий список модификаций (не считая аннотаций):

public protected private
abstract static final synchronized native strictfp

public, protected, а также private взаимоисключающие, думал, что этот раздел не говорит этого.

В спецификации также сказано:

Это ошибка времени компиляции, если объявление метода, содержащее ключевое слово abstract также содержит любое из ключевых слов private, static, final, native, strictfp, или же synchronized,

Так что, если вы включите abstract это только оставляет public | protected так максимум 2.

Следующее правило в спецификации гласит:

Это ошибка времени компиляции, если объявление метода, содержащее ключевое слово native также содержит strictfp,

Итак, это означает, что без abstract Вы можете смешать следующим образом:

public | protected | private
static
final
synchronized
native | strictfp

Максимальная длина 5, и есть 3 * 2 = 6 комбинаций с этой длиной.

Другие вопросы по тегам