java - 在几个不相关的类中使用的 Java 中在哪里定义常量

标签 java enums constants

在 Java 中在哪里定义常量的问题已在论坛中多次出现,但我仍在努力寻找一个我觉得合适的解决方案。

为简单起见,假设我有两个类:WriteMyDataReadMyData。没有一个是另一个的子类。这两个类共享两个对其操作至关重要的常量: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; }
}

因此,在我的两个类中,我通过 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/

相关文章:

c++ - 将数组数据插入模板

c++ - 使用 decltype 将其转换为 const

java - 什么时候使用异步计算?

java - 私有(private)静态类 Spring bean 注释 @Service 可以 Autowiring 吗?

java - Enums vs Subclasses,哪个是面向对象设计?

c# - LINQ 和枚举作为 IQueryable

c++ - 如何在C++中使用可读的2的常数幂?

java - 如何为新登录用户创建新的 cookie Spring Security

java - 为某些包 Spring MVC 设置不同的 ObjectMapper

java - 内存分配 Java 枚举