【问题标题】:Import or Implement Reusable Statics? [closed]导入或实现可重用的静态? [关闭]
【发布时间】:2012-10-24 21:35:33
【问题描述】:

选项#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 更费力:导入还是实施?
  • 是否存在一种方法比另一种方法更理想/更清洁的特定用例?

【问题讨论】:

  • 选项 3:import static com.me.myorg.myapp.WidgetStatics.*;.
  • 选项 4:public enum WidgetStatistics { FIZZ, BUZZ }

标签: java inheritance interface static classloader


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多