Tag: 枚举

如何将Enum与其相反的值相关联,如在主要方向(南北,东西等)?

我还在为我的迷宫游戏制作我的Cell课程。 在另一个线程的帮助之后,有人建议我使用EnumMap作为我的墙/邻居,这到目前为止工作得很好。 这是我到目前为止: enum Dir { NORTH, SOUTH, EAST, WEST } class Cell { public Map neighbors = Collections .synchronizedMap(new EnumMap(Dir.class)); public Map walls = Collections .synchronizedMap(new EnumMap(Dir.class)); public boolean Visited; public Cell() { Visited = false; for (Dir direction : Dir.values()) { walls.put(direction, true); } } // Randomly select an unvisited neighbor and tear […]

如何在f:selectItems中为枚举创建和使用通用bean?

我有这个签名的generics类: public abstract class EnumListBean<E extends Enum> { public List getEnumList() { //implementation details } } 目前,我必须定义一个空子类,以便访问具体generics参数的enumList属性: @ManagedBean @ApplicationScoped public class ItemRarityBean extends EnumListBean{ } 这使得访问该属性成为可能,例如: 我想知道是否真的必须声明一个派生bean但不能直接访问generics类作为bean: <f:selectItems value="#{enumListBean.enumList}” var=”rarity” itemLabel=”#{rarity.readableName}” itemValue=”#{rarity}” />

枚举:每个实例独有的方法

从另一个问题我了解到,在Java中可以为Enum的每个实例定义特定的方法 : public class AClass { private enum MyEnum{ A { public String method1(){ return null; } }, B { public Object method2(String s){ return null; } }, C { public void method3(){ return null; } } ; } … } 我很惊讶这甚至可能,这个“独有方法”特定于每个实例都有一个名称来查找文档? 另外, 它应该如何使用 ? 因为下一个没有编译: private void myMethod () { MyEnum.A.method1(); } 我该如何使用这些“独家”方法?

如果Enum声明没有递归部分,Java会有什么不同

请参阅Java Enum定义和为什么在java enum中声明为Enum <E extends Enum >进行一般性讨论。 如果Enum类被定义为,我想知道究竟会破坏什么(不再是类型安全,或者需要额外的强制转换等) public class Enum 我正在使用此代码来测试我的想法: interface MyComparable { int myCompare(T o); } class MyEnum implements MyComparable { public int myCompare(E o) { return -1; } } class FirstEnum extends MyEnum {} class SecondEnum extends MyEnum {} 有了它,我无法在这个确切的情况下找到任何好处。 PS。 我不被允许这样做的事实 class ThirdEnum extends MyEnum {} 当MyEnum用递归定义时 a)不相关,因为有了真正的枚举,你不能仅仅因为你不能自己扩展枚举而这样做 b)不正确 – […]

编译错误 – 用枚举切换

可能重复: 为什么我得到的枚举常量引用不能在案例标签中合格? 嗨,有人知道为什么当我切换Enum时,案例应该是不合格的Enum值吗? 例: switch(var) { case Enum.FIRST: break; } 是非法的 但: switch(var) { case FIRST: break; } 是合法的。 我理解var是特定类型(Enum),但是如果我使用Enum值的完全限定名称,编译器为何会关心?

打破一个大的Java枚举

采用具有1300个值并将其放入有组织组的Java枚举的建议做法是什么? 我知道你不能只扩展枚举组,那么还有其他好的选择吗?

你应该总是使用枚举而不是Java中的常量

在java <1.5中,常量将像这样实现 public class MyClass { public static int VERTICAL = 0; public static int HORIZONTAL = 1; private int orientation; public MyClass(int orientation) { this.orientation = orientation; } … 你会像这样使用它: MyClass myClass = new MyClass(MyClass.VERTICAL); 现在,在1.5中显然你应该使用枚举: public class MyClass { public static enum Orientation { VERTICAL, HORIZONTAL; } private Orientation orientation; public MyClass(Orientation orientation) […]

Java:访问枚举中的常量(枚举)

阅读SCJP书,我在第1章“自测”中发现了类似的内容: enum Animals { DOG(“woof”), CAT(“meow”), FISH(“burble”); String sound; Animals(String s) { sound = s; } } class TestEnum { static Animals a; public static void main(String[] args) { System.out.println(a.DOG.sound + ” ” + a.FISH.sound); // the following line is from me System.out.println(Animals.DOG.sound + ” ” + Animals.FISH.sound); } } 注意:代码编译正常。 我不明白为什么我们可以从变量a访问DOG,CAT或FISH常量。 我认为(并且也在书中写道)DOG,FISH,CAT作为常数以类似于public static final […]

为什么Java不允许在方法中定义枚举?

可能重复: Java:本地枚举 为什么我们不能在java中的特定方法中定义枚举? 如果我有一个场景,我将在方法中使用这些枚举值,而不是在任何其他地方。 在方法中声明而不是在全局定义它不是很好吗? 我的意思是公开或默认。

为什么枚举实现不能访问枚举类中的私有字段

我刚才通过说如何解决编译问题来回答这个问题: 如何通过重写方法来使用java enum中的字段? 但我不明白为什么错误发生在一开始。 以下是以枚举forms编写的示例: public enum MyEnum { FIRST { @Override public String doIt() { return “1: ” + someField; //error } }, SECOND { @Override public String doIt() { return “2: ” + super.someField; //no error } }; private String someField; public abstract String doIt(); } 这与抽象类完全相同 abstract class MyClass { class FIRST […]