导入或实施可重用静态?

时间:2012-10-24 21:35:34

标签: java inheritance interface static classloader

选项#1:

public class WidgetStatics {
    public static final String FIZZ = "fizz";
    public static final String BUZZ = "buzz";
}

然后:

import com.me.myorg.myapp.WidgetStatics

public class Thing1 {
    public void doSomething() {
        String x = getValueFromUser();
        if(x.equals(WidgetStatics.FIZZ))
            // ...
    }
}

选项#2:

public interface WidgetStatics {
    public static final String FIZZ = "fizz";
    public static final String BUZZ = "buzz";
    // ...
}

然后:

public class Thing2 implements WidgetStatics {
    public void doSomething() {
        String x = getValueFromUser();
        if(x.equals(FIZZ))
            // ...
    }
}

我的问题:

  • 一个选项是否比另一个更具性能?这导致ClassLoader更多的努力:导入或实施?
  • 是否存在一种特定用例,其中一种方法比另一种更理想/更清洁?

1 个答案:

答案 0 :(得分:1)

解决特定问题总有不止一种方法。

在Java中引入了接口以解决某些设计问题。其中一个当然是流行的多重继承问题。使用接口的另一个重要场景是,您希望设计一个类结构,其中某些类必须遵守接口中定义的合同(因此它们需要实现相关的接口)。

因为在您的情况下,您似乎没有执行任何此类合同或设计建议,我建议您不要使用接口。