如何在Java中使用同一文件的枚举参数值中的常量?

时间:2014-04-30 15:40:18

标签: java enums

我的项目中遇到了一种情况,我必须修改/重构枚举文件并使用更好的编码标准。我甚至不被允许创建一个新的常量文件等。

以下是我的问题示例 -

    public enum Enumtricks {

        // 1. private static final String DESC = "A String";

        ELEMENT("A String");    // want to use constant DESC

        // 2. private static final String DESC = "A String";


        private final String description;

        private Enumtricks(String description) {
            this.description = description;
        }

        public String value() {
            return this.description;
        }

    }

对于我收到错误的两种情况,信息是 - 1 GT;令牌“String”上的语法错误 2 - ;在定义字段之前无法引用字段

那么,有没有办法定义常数和&使用它们并避免使用String文字?

3 个答案:

答案 0 :(得分:1)

或者在enum之外添加一个接口,但在同一编译单元(=同一文件)内,如下所示:

package test;

interface Constants {
    String DESC = "A String";
}

public enum Enumtricks {
    Enumtricks(Constants.DESC);
    private final String description;
    private Enumtricks(final String description) {
        this.description = description;
    }
    public String value() {
        return this.description;
    }
}

这样,您可以将所有常量分组到enum

前面

答案 1 :(得分:0)

你的约束非常奇怪。如果我理解正确,你想在一个文件中有几个枚举。理论上这可能是这样的 - 但我不推荐它:

public class EnumCollection {

    public enum Enumtricks  {

        ELEMENT1("A String"),
        ELEMENT2("Another String"),
        ELEMENT3("Yet another String");

        private final String description;

        private Enumtricks(String description) {
            this.description = description;
        }

        public String value() {
            return this.description;
        }

    }

    public enum AnotherEnum {
        EN, UM, SA, RE, CO, OL;
    }
}

答案 2 :(得分:0)

这是我能让你在与枚举相同的文件中使用常量的最接近的。

public enum Enumtricks {
    ELEMENT(EnumConstants.DESC);

    private final String description;

    private Enumtricks(String description) {
        this.description = description;
    }

    public String value() {
        return this.description;
    }

    private static class EnumConstants {
        private static final String DESC = "A String";
    }
}