我有一个只有常数的类。代码片段是:
public class CommonConstant
{
public static final String DAY = "DAY";
public static final String WEEK = "WEEK";
public static final String MONTH = "MONTH";
public static final String YEAR = "YEAR";
public static final String ACCEPTED = "accepted";
public static final String REJECTED = "rejected";
public static final String ADDED = "added";
public static final String MODIFIED = "modified";
}
在类文件中指定常量或者它应该在接口中是不错的做法? 什么是好的做法?
答案 0 :(得分:4)
由于常量涉及实现,因此您应该将它们放入具有私有构造函数的类中,或者使用枚举。 Effective Java 2nd Edition中的Joshua Bloch不鼓励使用“常量接口”。
Bloch说接口应仅用于定义类型,并且当类实现接口时,这个接口用作引用实例的类型 - 将接口用于任何其他目的是不合适的。如前所述,常量是实现以及有关常量接口的更多信息
如果在将来的版本中修改了类,则不再需要它 要使用常量,它仍然必须实现接口以确保 二进制兼容性如果非最终类实现常量 接口,它的所有子类都会污染它们的名称空间 通过界面中的常量
BlocHquoted:)
HTH,Carlo
答案 1 :(得分:4)
What is a good practice
这实际上是一种很好的做法
public enum EnumTest {
DAY("DAY"), WEEK("WEEK"), MONTH("MONTH"), YEAR("YEAR");
private String value;
private EnumTest(String s) {
value = s;
}
public String getValue() {
return value;
}
}
然后在其他地方
System.out.println(EnumTest.DAY.getValue()); // give you the value
或
for(EnumTest e :EnumTest.values()){ //values return an array of enum values
System.out.println(e);
}