如何使用公共属性创建Enums组

时间:2016-11-11 09:42:42

标签: java class enums

我的Class包含一组public Strings。我想将它们分组,以便从另一个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";
    }
}

但我认为使用enums进行此类任务会更有效率。

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

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")
}

但遗憾的是enums无法展开classes,如果EnumInterface是实际interface,那么我将无法拥有field,{{1 }},或constructor那里。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

但我也做了这个私人构造函数:

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

因此在任何情况下都无法实例化此类。