Dus*_*yte 7 java enums constants
在Java中定义常量的位置的问题在论坛中出现了很多次,但我很难找到一个我觉得舒服的解决方案.
为简单起见,假设我有两个类:WriteMyData和ReadMyData.None是另一个的子类.两个类共享两个对其操作至关重要的常量:String DELIMITER和int LENGTH.将来我可能想要更改这些常量的值,以便在适当的地方定义它们.
这种共识似乎常常有利于这种enum类型.但是,在我的情况下没有什么可以枚举,所以我最终只有一个项目enum,我打电话DEFAULT:
public enum DataSettings {
DEFAULT(",", 32);
private final String delimiter;
private final int length;
DataSettings(String delmiter, int length) {
this.delimiter = delimiter;
this.length = length;
}
public String getDelimiter() { return delimiter; }
public int getLength() { return length; }
}
Run Code Online (Sandbox Code Playgroud)
因此,在我的两个类中,我通过DataSettings.DEFAULT.getDelimiter()和访问常量DataSettings.DEFAULT.getLength().
这是非常好的OO风格吗?是否使用enum过度杀伤?如果我不使用enum,我该怎么做?为常量创建一个接口似乎不受欢迎,而且我的类似乎没有自然的超类来源.初学者错误是只有一个默认项目enum吗?
如果只有这两个常量并且不会有更多,你可以有一个像这样的接口
interface DataSetting
{
String DELIMITER = ",";
int LENGTH = 32;
}
Run Code Online (Sandbox Code Playgroud)
如果你需要通过属性来初始化
public class DataSetting {
public static String DELIMITER = ",";
public static int LENGTH = 32;
static {
DELIMITER = System.getProperty("delimiter");
LENGTH = Integer.parseInt(System.getProperty("length"));
// or from config
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4227 次 |
| 最近记录: |