使用Enum来保持常量

时间:2014-08-25 11:37:54

标签: java enums constants

我知道java中enum的用法。

建议使用枚举来存储程序常量(而不是下面描述的类)?

public class Constants{
    public static final String DB_CF_NAME = "agent";
    public static final String DB_CF_ID = "agent_id";
    public static final String DB_CF_TEXT = "agent_text";
    public static final String DB_CF_LATITUDE = "latitude";
}

4 个答案:

答案 0 :(得分:4)

建议使用Enum。可能的原因如

  • 提供默认函数来迭代常量
  • 可以编写静态函数来获取基于键的值

可以自己制作方法,让你的课程自我维持。但最好的方法是使用Enum

答案 1 :(得分:2)

是的,你是对的 - 建议使用枚举来存储程序常量。

正如您在下面的示例中所看到的,此方法允许您:

  • 为字符串文字添加/覆盖有用的方法:

    public enum Days {
        MONDAY("Monday"),
        TUESDAY("Tuesday"),
        SUNDAY ("Sunday");
    
    private final String name;
    
    private Day(String s) {
            name = s;
    }
    
  • 使用Enums的内置方法:

    public boolean equalsName(String otherName){
        return (otherName == null)? false : name.equals(otherName);
    }
    
  • 使用EnumMapEnumSet

    private EnumSet<Option> badDays = EnumSet.of(Days.MONDAY, Days.TUESDAY);
    

Here is a good对此进行了讨论。

答案 2 :(得分:1)

这适用于Java 1.5及以上版本:

public enum Constants {
    DB_CF_NAME("agent"),
    DB_CF_ID("agent_id"),
    DB_CF_TEXT("agent_text"),
    DB_CF_LATITUDE("latitude");

    private String name;

    private Constants(String name)
    {
        this.name = name;
    }

    public String getName()
    {
        return name;
    }
}

您需要使用问题中提到的public static final变量构造的唯一时间是您在为Java 1.4或更低版本编程时。我有点希望你永远不需要那样做。

答案 3 :(得分:1)

是。究竟。您可以使用Enum设计用作预定义常量。

Enum docs也被提及。

  

枚举类型是一种特殊数据类型,它使变量成为一组预定义常量。