在Java中定义几个不相关类中使用的常量的位置

Dus*_*yte 7 java enums constants

在Java中定义常量的位置的问题在论坛中出现了很多次,但我很难找到一个我觉得舒服的解决方案.

为简单起见,假设我有两个类:WriteMyDataReadMyData.None是另一个的子类.两个类共享两个对其操作至关重要的常量:String DELIMITERint 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吗?

vel*_*s4j 2

如果只有这两个常量并且不会有更多,你可以有一个像这样的接口

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)