![](/img/trans.png)
[英]What is the maximum number of threads that can parallely execute a Java Object non-synchronized method?
[英]What are the maximum number of modifiers, a java method can contain?
在聲明 java 方法之前使用了幾個修飾符,例如public
、 static
、 synchronized
等。
我只想知道一個java方法可以包含的修飾符的最大數量或修飾符的所有組合。
請參閱 Java 語言規范, 第 8.4 章:
MethodDeclaration:
{MethodModifier} MethodHeader MethodBody
和:
MethodModifier:
(one of)
Annotation public protected private
abstract static final synchronized native 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
public
、 protected
和private
是相互排斥的,盡管該部分沒有這么說。
規范還說:
如果包含關鍵字
abstract
的方法聲明還包含關鍵字private
、static
、final
、native
、strictfp
或synchronized
中的任何一個,則會出現編譯時錯誤。
因此,如果您包含只保留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.