java - 如何创建具有公共(public)属性的枚举组

标签 java class enums

我有一个,其中包含一组公共(public)字符串。我想将它们分组,以便从另一个 Class 访问它们不会那么困惑。

例如,以下行将打印该字段。

System.out.println(ClassName.GroupName.FIELD);

我实现这个的方法是:

public class ClassName{
    public static class GroupName{
        public static final String FIELD = "TEXT";
        public static final String FIELD1 = "TEXT";
    }
    public static class GroupName1{
        public static final String FIELD2 = "TEXT";
    }
}

但我认为使用枚举来完成此类任务会更有效。

问题是我必须为每个组写这个:

public enum GroupName{
    FIELD ("TEXT"), FIELD1 ("TEXT");

    private String text;

    Extra(String text) {
        this.text = text;
    }

    public String toString() {  
        return text;
    }
}

因此,Class 会变得太大,而且坦率地说,它看起来不会那么整洁。

如果我能做这样的事情,我会更喜欢它:

public class EnumInterface{
    private String text;

    public EnumInterface(String text){
        this.text = text;
    }

    public String toString(){
        return text;
    }

}

public enum GroupName extends EnumInterface{
    FIELD("TEXT"), FIELD1("TEXT")
}

但不幸的是枚举无法扩展,并且如果EnumInterface是一个实际的接口(interface),那么我将无法在那里拥有字段构造函数方法

有什么建议吗?

最佳答案

按照 Andy Turner 的指示, here ,我仍然使用 Classes 而不是 Enums

但我也制作了这个私有(private)构造函数:

private GroupName(){
    throw new UnsupportedOperationException("This class cannot be instantiated.");
}

使得该类在任何情况下都无法被实例化。

关于java - 如何创建具有公共(public)属性的枚举组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40545126/

相关文章:

java - 实现类的 Jython 脚本未从 Java 正确初始化

c++ - () 和 = 在创建类实例时有什么区别?

c# - 为字典中的结构赋值时出现编译错误

java - Java 中使用 BigDecimal 的二维数组

java - 我无法使用 JSOUP 解析图像 src。

java - REST:@autowired heavenService 上的 java.lang.NullPointerException

java - 使用新的 Java 8 DateTimeFormatter 进行严格的日期解析

java - Android Studio 和 Firebase : Show ImageView on Full Screen

visual-studio-2010 - Azure 表存储、WCF 服务和枚举

java - Hibernate 无法保存其中一个字段为枚举的实体