2012-12-26 21 views
1

我有個小靜態方法mymethod裏面有個比較大的(庫)類com.package.pirulo。我可以做兩件事之一:要麼我導入com.package.pirulo,然後我只使用pirulo.mymethod(...),或者我可以使用direclty方法com.package.pirulo.mymethod(...)是否使用比導入整個班級便宜的靜態方法?

從資源/速度的角度來看哪個更便宜?它看起來像第二個選項是便宜,但因爲mymethod可以調用其他方法com.package.pirulo也許全庫總是莫名其妙反正進口...

和:是第一個選項爲貴(同一POV)爲實例化一個pirulo目的?

回答

3

導入在運行時絕對沒有區別,編譯時只有一個可以忽略的(至多)差異。

+0

使用靜態調用的要點是我將使用單一方法而不是整個大類。所以從你們所有人告訴我,我認爲編譯器總是導入整個類。這很有意義,因爲該方法可能會使用該類中的其他字段/方法。感謝所有回答! –

+0

編譯器僅「導入」您告訴它的內容。所以它可以只是一種方法。但是,當然,在運行時,整個類都會被加載(並且如果導入它,它們之間沒有任何區別,字節碼完全相同)。 – Thilo

+0

這完全是我的疑問,如果調用小方法將在運行時加載大類。太遺憾了。 :o)沒有人回答我的第二個問題,雖然......謝謝! –

2

調用靜態導入與使用完全限定名稱在性能上沒有區別。

+0

」性能沒有差異「*或其他*。生成的字節碼完全相同。 – Thilo

1

從包中導入需要使用的類。

當您導入的唯一時間一個方法是靜態的進口,這不,不要節省您的時間,如果他們這樣做,這是微不足道的,你不應該反正做這個原因。

也就是說,有時靜態進口可以提高可讀性。例如,java.lang.String.format。

2

兩種不同的導入方法幾乎沒有區別。

可能很少有這樣的情況,您應該真的很擔心對象創建。

在極端微觀管理的角度來看,最好不要製造一個物體,但它通常是不明顯的。

0

導入語句只能使代碼易讀並且易於編寫。代碼編譯完成後,所有引用都將被完全限定的名稱替換,並且忽略未使用的導入。 String s;"將自動變爲java.lang.String s;,因此無關緊要。 「

+0

這不是我想要問的。我懷疑是在導入一個大類之間,或者只是在這個類中調用一個小的靜態方法。我唯一的疑問是,如果調用這個小方法將整個課程與它一起導入。從人們給出的答案中,我知道情況就是這樣。 –

相關問題