包裝類Integer
具有靜態方法parseInt()
其中使用這樣的:我們可以在Java中沒有對象的情況下調用非靜態類的方法嗎?
Integer.parseInt();
我認爲只有靜態類的方法可以被稱爲像這樣(即Class.doMethod()
)。所有非靜態類都需要實例化對象才能使用它們的方法。
我檢查了API,顯然Integer
被宣佈爲public final Integer
- 不是靜態的。
包裝類Integer
具有靜態方法parseInt()
其中使用這樣的:我們可以在Java中沒有對象的情況下調用非靜態類的方法嗎?
Integer.parseInt();
我認爲只有靜態類的方法可以被稱爲像這樣(即Class.doMethod()
)。所有非靜態類都需要實例化對象才能使用它們的方法。
我檢查了API,顯然Integer
被宣佈爲public final Integer
- 不是靜態的。
任何類都可以同時包含static
和非靜態方法。在任何類上調用static
方法(包括您自己的方法)時,不需要需要實例化類的實例,只需使用類名稱MyClass.methodName()
調用該方法即可。
事實上,即便下面的工作:
Integer nullInt = null;
nullInt.parseInt("5");
這工作,因爲只有參考的類型調用static
方法時是非常重要的。但考慮到這種不好的風格:總是使用例如改爲Integer.parseInt
。
另請注意,無論如何您無法聲明頂級類爲static
:只能將嵌套/內部類聲明爲靜態。
救世主! :) :) :) – user9371102
不,你錯了。
只有靜態方法可以像這樣調用,但它們可能屬於'非靜態'類。
一種表達方式:Integer
是一個具體的對象;你可以有很多Integer
。只有一個Integer.MAX_VALUE
。
也就是說,Integer
有一些具體的東西,其他的只需要存在一次,任何地方。
我發現「'整數'是一個具體的對象'有點混亂...... *一個*整數'是一個具體的對象,'整數'是一個類。 –
在java中,可以從對象中調用靜態方法,但這隻會生成一個警告並仍然會編譯。 一個非靜態類可以擁有靜態字段和所有實例共享的方法(這就是爲什麼「Shared」在VB.NET中表示靜態的原因)。因此,從對象訪問靜態成員會使讀者感到困惑,必須避免。
「靜態類」是什麼意思? –
這個類是靜態的並不重要 - 它是_method_是否是靜態的。 –