Java 声明要在数组中使用的枚举?
对不起,这个问题可能很简单 我需要一组旗子Java 声明要在数组中使用的枚举?,java,arrays,enums,Java,Arrays,Enums,对不起,这个问题可能很简单 我需要一组旗子 boolean[20] isTownVisited 但在其中使用int并不方便,我想使用字符串: isTownVisited[Town.Milan] = true; 或 我已尝试声明枚举 enum Town {Milan, Rome, Florence, Napoli} 但是我仍然不能用它来索引我的布尔数组。如何解决这个问题,我可以写以下内容: enum Town {Milan = 0, Rome = 1, Florence = 2, Napo
boolean[20] isTownVisited
但在其中使用int并不方便,我想使用字符串:
isTownVisited[Town.Milan] = true;
或
我已尝试声明枚举
enum Town {Milan, Rome, Florence, Napoli}
但是我仍然不能用它来索引我的布尔数组。如何解决这个问题,我可以写以下内容:
enum Town {Milan = 0, Rome = 1, Florence = 2, Napoli = 3}
您可以使用枚举集
Set<Town> towns = EnumSet.of(Town.Milan);
towns.add(Town.Rome);
return towns.contains(Town.Napoli);
Set towns=EnumSet.of(Town.Milan);
城镇。添加(城镇。罗马);
返回城镇。包含(城镇。那不勒斯);
在引擎盖下,EnumMap和EnumSet使用
int ordinal()代码>枚举集使用位图。u始终可以创建一个声明了所有变量的公共静态类
所以
然后你可以简单地做Town.rome来访问变量
注意:如果要在多个对象中使用这些变量,请不要使用静态变量
在这种情况下,创建普通变量,然后创建一个新对象并使用该对象的变量。听起来您需要的是一个映射而不是数组。您可以创建一个地图
,其中城镇
是一个枚举,布尔值是该城镇是否有人访问过。Gee。。。我会用这个:
boolean[Town.values().length] isTownVisited;
isTownVisited[Town.Milan.ordinal] = true;
我将失去迭代所有城镇的能力,在静态类中为城镇设计唯一索引,并像你最初做的那样创建布尔数组。这样,您既可以获得迭代,也可以获得使用名称的能力。例如,rome=0;伦敦=1;等等,所有君士坦丁堡[0]都变成了君士坦丁堡[Towns.rome]。。希望这能解决您的问题p.S我相信您可以将enum强制转换为int x=(int)Town.Rome;谢谢,这可能就是我想要的:)但是现在EnumSet看起来很好。。。我尝试过使用它,我对它很满意,因为集合比数组更容易使用。。。
public class Town{
public static bool Rome = false;
// and the rest
}
boolean[Town.values().length] isTownVisited;
isTownVisited[Town.Milan.ordinal] = true;