对不起,这可能很简单。
我需要一组标志
boolean[20] isTownVisited
但是在它中使用int并不方便,我想使用字符串:
isTownVisited[Town.Milan] = true;
或
return isTownVisited[Town.Rome]
我试图声明枚举
enum Town {Milan, Rome, Florence, Napoli}
但我仍然不能用它来索引我的布尔数组。如何解决这个问题,我可以写一下:
enum Town {Milan = 0, Rome = 1, Florence = 2, Napoli = 3}
答案 0 :(得分:6)
您可以使用EnumSet。
Set<Town> towns = EnumSet.of(Town.Milan);
towns.add(Town.Rome);
return towns.contains(Town.Napoli);
在bonnet下,EnumMap和EnumSet使用int ordinal();
EnumSet使用位图。
答案 1 :(得分:1)
哎呀...我会用这个:
boolean[Town.values().length] isTownVisited;
isTownVisited[Town.Milan.ordinal] = true;
答案 2 :(得分:0)
你总是可以创建一个声明了所有变量的公共静态类
所以
public class Town{
public static bool Rome = false;
// and the rest
}
然后你可以简单地让Town.rome来访问变量......
注意如果要在多个对象中使用这些变量,请不要创建静态变量。
在这种情况下,制作普通变量,然后创建一个新对象并使用该对象的变量
答案 3 :(得分:0)
听起来你需要一张地图而不是一个数组。您可以创建Map<Town, Boolean>
,其中Town
是枚举,布尔值是该城镇是否已被访问过。