由於靜態字段對象是在類級別創建的(並且對所有對象都通用),它是靜態導入特定字段還是繼承(使用實現),所有字段都會創建相同數量的內存?如何繼承靜態字段會影響性能?
例如在下面的propgram中創建了多少個MyOwn對象?
class MyOwn{}
public interface ConstantIfc {
public final static MyOwn REF = new MyOwn();
}
class A implements ConstantIfc {}
class B implements ConstantIfc {}
public class c {
public static void main(String... arg) {
A refA = new A();
B refB = new B();
}
}
如果相同,靜態導入的最終常量類如何比常量接口好?
更新:
我明白,最好避免常量的遺傳。不適當地利用實現繼承往往會導致設計不靈活。所以我們最好去靜態導入類/接口。但仍然接口是抽象的,爲了保持抽象,它們不應該包含實現細節(包括常量變量)。接口也經常用於描述公共API,其中實現細節不屬於。出於這個原因,將常量數據放入類而不是接口是有意義的。感謝robjb。
我相信只有一個實例被創建(對於每個類加載器)。 – 2012-01-02 05:57:41