【发布时间】:2012-01-02 05:42:11
【问题描述】:
由于静态字段对象是在类级别创建的(并且对所有对象都是通用的),是否对特定字段进行静态导入并继承(使用实现)所有字段将创建相同数量的内存?
例如,在下面的这个程序中,创建了多少个 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。
【问题讨论】:
-
我相信只创建了一个实例(对于每个类加载器)。
标签: java