由于静态字段对象是在类级别创建的(并且对所有对象都通用),它是静态导入特定字段还是继承(使用实现),所有字段都会创建相同数量的内存?如何继承静态字段会影响性能?
例如在下面的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