【发布时间】:2014-02-03 02:58:25
【问题描述】:
我使用接口来声明常量,因为它们是 public static final。很多时候我看到人们用公共静态最终常量变量编写一个类,有时我也这样做了。哪个是更好的实现方式,接口还是使用类?
public class MyCodeConstants {
public static final String VALUE_1 = "VALUE1";
public static final String VALUE_2= "VALUE2";
}
或
public interface MyCodeConstants {
public static final String VALUE_1 = "VALUE1";
public static final String VALUE_2= "VALUE2";
}
使用哪种方法更好?为什么?
【问题讨论】:
-
为什么要在接口中定义常量?似乎在界面中将系统的机制暴露为不必要的细节。
-
您真的希望客户端实现该接口吗?使用
interface作为执行public static final的副作用并不是一个足够好的理由。 (真的,使用enum) -
@T McKeown 我想知道哪个是更好的做法以及这样做的原因。即使我会在课堂上制作常量,这与“将系统机制暴露为不必要的细节”不同。
-
如果这个类的 only 目的是让客户端使用常量,而你真的不想要类(或子类)的任何对象,请将其设为
public final class并添加一个private无参数构造函数,这样任何人都不会无意中扩展、实现或实例化该类。 -
@mattingly890 请仔细阅读问题,如果您不喜欢或不喜欢我可以删除的问题:)