草庐IT

Java:无法在枚举中使用 EnumSet:初始化错误:Tech Research Talent Tree 示例

错误:...Causedby:java.lang.ExceptionInInitializerError...Causedby:java.lang.ClassCastException:classcom.evopulse.ds2150.TechTrees$BuildingTechTreenotanenumatjava.util.EnumSet.noneOf(UnknownSource)atjava.util.EnumSet.of(UnknownSource)atcom.evopulse.ds2150.TechTrees$BuildingTechTree.(TechTrees.java:

java - 在现代 Java 8 API 中使用位域而不是 EnumSet 的理由

EnumSet,与enum本身一样古老(都是从Java5开始),应该是位域用例的不折不扣的替代品:既快又精简作为位域(好吧,除了不是原始类型),并且可以安全引导。另一方面,最近和多年来最受期待的JavaAPI—StreamsAPI—毫不掩饰地为Spliterator的characteristics使用位域。.我是否应该将以上内容视为核心Java专家明确承认EnumSet毕竟不是那么好?我是否应该重新考虑永远不要使用位域的常见最佳实践建议? 最佳答案 很惊讶地看到它使用的是位域而不是EnumSet。理性在thismailinglist

java - 如何创建空的 EnumSet?

我正在努力解决EnumSet因为它令人惊讶地没有简单的构造函数,而且它的方法也不喜欢空值。我想出什么:EnumSetx=EnumSet.copyOf(Collections.emptySet());这有点有效,但对我来说似乎不合适。 最佳答案 使用方法EnumSet.noneOf:EnumSetx=EnumSet.noneOf(MyClass.class); 关于java-如何创建空的EnumSet?,我们在StackOverflow上找到一个类似的问题: h

java - Enum.values() 与 EnumSet.allOf()。哪一个更可取?

我查看了EnumSet.allOf的底层,它看起来非常高效,尤其是对于值少于64个的枚举。基本上所有集合共享所有可能的枚举值的单个数组,唯一的其他信息是一个位掩码,在allOf的情况下一举设置。另一方面,Enum.values()似乎有点黑魔法。此外,它返回的是一个数组,而不是一个集合,因此在许多情况下,它必须用Arrays.asList()修饰才能在任何需要集合的地方使用。那么,EnumSet.allOf是否应该比Enum.values更可取?更具体地说,应该使用哪种形式的for迭代器:for(finalMyEnumval:MyEnum.values());或for(finalMyE

java - EnumSet 的真正含义是什么?

我有以下例子:importjava.util.EnumSet;importjava.util.Iterator;publicclassSizeSet{publicstaticvoidmain(String[]args){EnumSetlargeSize=EnumSet.of(Size.XL,Size.XXL,Size.XXXL);for(Iteratorit=largeSize.iterator();it.hasNext();){Sizesize=(Size)it.next();System.out.println(size);}}}enumSize{S,M,L,XL,XXL,XXXL