我在尝试使用枚举参数中的值填充静态地图时遇到了麻烦。我想在这里说的话的例子:
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);
}
}
有没有办法在静态块或构造函数外部的其他位置访问这些变量?我一直在寻找一段时间,但我找不到任何东西。
提前致谢。
答案 0 :(得分:1)
您需要将numberone
和numbertwo
存储在enum
字段中。然后,您可以使用静态初始化块来迭代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);
}
}