如果我用Java創建一個類的實例,爲什麼最好是靜態調用同一個類的靜態方法,而不是使用this.method()?爲什麼最好從方法的類的實例中靜態地調用靜態方法?
當我嘗試通過this.staticMethod()從自定義類的構造函數中調用靜態方法staticMethod()時,我從Eclipse獲得警告。
public MyClass() { this.staticMethod(); }
VS
public MyClass() { MyClass.staticMethod(); }
任何人都可以解釋爲什麼這是一個糟糕的事是什麼?在我看來,編譯器應該已經分配了對象的一個實例,所以靜態分配內存將是不必要的開銷。
編輯:
什麼,我聽到的要點是,這是不好的做法,主要是因爲可讀性的,也是可以理解的。我真正想要問的是(雖然不是很清楚)是在調用MyClass.staticMethod()或this.staticMethod()之間有什麼區別。
不重寫靜態方法,你隱藏起來。覆蓋意味着多態性,這是靜態方法所不具備的。 – TofuBeer 2010-04-23 03:59:18
@TofuBeer謝謝,我的術語不夠精確。從某人在靜態方法中使用'this'的角度來看,這可能意味着某種形式的多態性意圖,而這種意圖不起作用。 – Ash 2010-04-23 04:16:11