在构造函数之外访问枚举参数?

我无法使用枚举参数的值填充静态地图。 我想在这里说的例子:

public enum LettersAndNumbers {
     A(1, 2),
     B(2, 3);

     private static HashMap<Integer, Integer> numbers = new HashMap<Integer, Integer();

     private LettersAndNumbers(int numberone, int numbertwo) {}

      // Somehow put arguments "numberone" and "numbertwo" into map

     public static Integer getNumberTwo(int numberone) {
          return numbers.get(numberone);
     }
}

有没有办法在静态块或构造函数外的其他地方访问这些变量? 我一直在寻找一段时间,但我无法找到它。

提前致谢。


你需要存储numberonenumbertwoenum的领域。 然后你可以使用一个静态初始化块迭代values()并将它们存储在你的Map 。 就像是,

public enum LettersAndNumbers {
    A(1, 2), B(2, 3);
    private int numberone;
    private int numbertwo;
    private static Map<Integer, Integer> numbers = new HashMap<>();
    static {
        for (LettersAndNumbers lan : LettersAndNumbers.values()) {
            numbers.put(lan.numberone, lan.numbertwo);
        }
    }

    private LettersAndNumbers(int numberone, int numbertwo) {
        this.numberone = numberone;
        this.numbertwo = numbertwo;
    }

    public static Integer getNumberTwo(int numberone) {
        return numbers.get(numberone);
    }
}
链接地址: http://www.djcxy.com/p/38075.html

上一篇: Accessing enum arguments outside of constructor?

下一篇: Adding "private" to enum field changes static context