在 Java 中在哪里定义常量的问题已在论坛中多次出现,但我仍在努力寻找一个我觉得合适的解决方案。
为简单起见,假设我有两个类:WriteMyData
和ReadMyData
。没有一个是另一个的子类。这两个类共享两个对其操作至关重要的常量: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; }
}
因此,在我的两个类中,我通过 DataSettings.DEFAULT.getDelimiter()
和 DataSettings.DEFAULT.getLength()
访问常量。
这真的是好的 OO 风格吗? enum
的使用是否有点矫枉过正?如果我不使用 enum
,我应该怎么办?为常量创建接口(interface)似乎不受欢迎,而且我的类似乎没有自然的父类(super class)可以派生。 enum
中只有一个 default 项是初学者的错误吗?
最佳答案
只需创建类似于 Constants.java
的类,您将在其中放置所有常量。
例如:
public class Constants {
public static final String DELIMITER = "-";
public static final int LENGTH = 1;
}
并通过以下方式在您需要的地方使用它们:
Constants.DELIMITER
Constants.LENGTH
关于java - 在几个不相关的类中使用的 Java 中在哪里定义常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34654497/