在构造函数之外访问枚举参数?
我无法使用枚举参数的值填充静态地图。 我想在这里说的例子:
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);
}
}
有没有办法在静态块或构造函数外的其他地方访问这些变量? 我一直在寻找一段时间,但我无法找到它。
提前致谢。
你需要存储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);
}
}
链接地址: http://www.djcxy.com/p/38075.html