java - 继承静态字段如何影响性能?

标签 java

由于静态字段对象是在类级别创建的(并且对所有对象都是通用的),因此特定字段上的静态导入并继承(使用实现)所有字段是否会创建相同数量的内存?

例如,在下面的 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();
   }
 }

如果相同的话,静态导入的最终常量类如何比常量接口(interface)更好?

更新:
我知道最好避免常量继承。不正确地利用实现继承通常会导致设计不灵活。所以我们可以更好地静态导入类/接口(interface)。但接口(interface)仍然是一种抽象,为了保持抽象,它们不应该包含实现细节(包括常量变量)。接口(interface)也经常用于描述不属于实现细节的公共(public) API。因此,将常量数据放入类而不是接口(interface)中是有意义的。谢谢罗杰布。

最佳答案

在您给出的示例中,仅创建了一个 MyOwn 对象。它是在您的程序第一次加载 ConstantIfc 接口(interface)时创建的。

即使您使用静态导入,答案仍然是相同的。静态导入不应该在性能方面比接口(interface)中的常量更好。它们被引入到语言中是为了避免接口(interface),它们所做的只是定义常量,从未用作接口(interface)(没有变量与它们一起键入),从而引起困惑。

关于java - 继承静态字段如何影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8697767/

相关文章:

java - 我在哪里可以了解 Java 中的内存管理是如何工作的?

java - 如何将 dom4j xml 转换为 Swing Jtree?

java - Web.xml(tomcat) 与 ApplicationContext.xml(spring) 哪个先加载?

Java FXML : Why is my imageView not Showing, 以及如何从我的计算机上传图像?

java - 为什么我必须在 Split 方法中使用 Array.toString?

java - 使用放心的 XML 映射

java - 是否有对象更改跟踪/版本控制 Java API?

java - 配对不同集合中的元素 : how to avoid deep neSTLed for loops?

java - 在java中获取目录名称

使用 MpAndroidChart api 饼图 api 时出现 java.lang.IllegalArgumentException : DrawerLayout must be measured with MeasureSpec. EXACTLY.error