簡體   English   中英

一個java方法最多可以包含多少個修飾符?

[英]What are the maximum number of modifiers, a java method can contain?

在聲明 java 方法之前使用了幾個修飾符,例如publicstaticsynchronized等。

我只想知道一個java方法可以包含的修飾符的最大數量或修飾符的所有組合。

請參閱 Java 語言規范, 第 8.4 章

MethodDeclaration:
  {MethodModifier} MethodHeader MethodBody

和:

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

你不能混合:

  • 訪問修飾符(所以你得到了這 3 個中的一個,或者沒有包保護)
  • 抽象、靜態、最終
  • 抽象與(私有,靜態,最終,本機,strictfp,同步)
  • 最后:本地和strictfp

將所有這些放在一起(感謝用戶 Andreas 的出色措辭):

使用正則表達式語法,我們可以:

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

因此,最大數量為 5; 以及這 5 個關鍵字的 6 種不同組合。

根據 Java 規范第8.4.3 節。 Method Modifiers修改的總列表是(不包括注釋):

 public protected private abstract static final synchronized native strictfp

publicprotectedprivate是相互排斥的,盡管該部分沒有這么說。

規范還說:

如果包含關鍵字abstract的方法聲明還包含關鍵字privatestaticfinalnativestrictfpsynchronized中的任何一個,則會出現編譯時錯誤。

因此,如果您包含只保留public | protected abstract public | protected public | protected ,因此最多為 2。

規范中的下一條規則說:

如果包含關鍵字native的方法聲明也包含strictfp ,則會出現編譯時錯誤。

因此,這意味着沒有abstract ,您可以按如下方式混合:

public | protected | private
static
final
synchronized
native | strictfp

最大長度為 5,並且該長度有 3 * 2 = 6 種組合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM