问题标签 [enumset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1760 浏览

java - 这个 Java EnumSet 初始化构造是如何工作的?

我们有构建EnumMap<K,V>实例的习惯,如下EnumMapExample.java例所示:

可能是一个快速回答的问题,但我无法为我的谷歌找到这种填充private final EnumMap<TestEnum, String> myEnumMap2 个(人为的)枚举类型的方法是如何调用的以及它是如何工作的?

问题细化:所以我叫注意分号前的new EnumMap<K,V>(SomeEnum.class){{ /* initialization code */ }};双花括号。那个双括号是什么东西?{{ }};

0 投票
1 回答
966 浏览

java - Java 中的线程安全枚举集

我使用以下代码来初始化 EnumSet 的同步实例:

我有两个问题:

  • 在这种情况下,我是否保留了 EnumSet 的所有优点,例如紧凑性和效率?
  • 是否有更多...比方说...语义丰富的方法来获取 EnumSet 的空且同步的实例?
0 投票
4 回答
2814 浏览

java - 检查枚举集是否有相同的枚举值

我有两个EnumSets。

我想找出两组中都存在哪些值。(在这种情况下,A3。)

有什么快速的方法吗?

0 投票
2 回答
1443 浏览

java - 如何在 Java 中正确扩展/继承 EnumSet?

我试图扩展EnumSetComparable在 Eclipse 中实现。然而,我从一开始就充满了错误。这是我的开始:

(问题一)定义一个显式构造函数

它立即通知我:Implicit super constructor EnumSet<Suits>() is undefined for default constructor. Must define an explicit constructor.所以,我按照快速修复并添加了以下构造函数:

...然后它通知我:The constructor EnumSet<Suits>(Class<E>, Enum[]) is not visible。我尝试更改此类和此构造函数的访问修饰符无济于事。

(问题2)覆盖抽象方法

下一个问题是当我决定继续并修复 Eclipse 报告的下一个错误时:The type ExtendedEnumSet must implement the inherited abstract method AbstractCollection<Suits>.iterator(). 当然,这只是冰山一角。我再次使用快速修复 ( add unimplemented methods) 并添加以下内容:

然后报告到哪里The method addAll() of type ExtendedEnumSet must override or implement a supertype methodaddRange它为和回显此错误complement。我可以从:复制addAll签名。但是,当我尝试从 API 文档复制其他方法签名 ( , ) 时,它们似乎不存在。我不知所措。Setpublic boolean addAll(Collection<? extends Suits> collection)addRangecomplement

EnumMap改用了,效果很好。EnumSet似乎是不可能的。我错过了什么吗?

0 投票
1 回答
171 浏览

java - 向 EnumSet 添加类型参数总是给我“绑定不匹配”

我在下面有这段代码:

我想重载一种方法,如下所示,并获得绑定不匹配:

我改到下面,它不起作用。

为什么?我该怎么办?

0 投票
2 回答
497 浏览

java - 只读 EnumSet 迭代器线程安全吗?

我有一个EnumSet最终的和不可变的,即在构造函数中初始化一次。

contains()这个EnumSet线程上的方法安全吗?它在内部使用迭代器进行包含检查。因此,如果两个线程同时调用contains()一个调用中的迭代器位置是否会影响另一个?还是迭代器在这两个线程调用中具有不同的实例?

0 投票
1 回答
2539 浏览

java - java EnumSet,不兼容的类型:推理变量 E 的边界不兼容

我有一个下面的方法,它返回一个包含所有元素的枚举集Types

如下所示Typesenum

GroupType界面是:

NamedType界面:

编译时,出现以下错误:

0 投票
2 回答
162 浏览

java - 在 Map 上操作时的问题, 对象> 在 Java 中

memberinMyClass用于存储几种不同Enum 类型EnumSet。在实现相关方法时,我遇到了一些问题:当我尝试这样调用方法时:

错误来了:

putEnumSet(Class<E>, E)类型中的方法MyClass<Word>不适用于参数(Class<capture#1-of ? extends EnumSet>, EnumSet<Category>)

如何处理这个问题?我认为它可能来自raw typetype erasure,但我不知道主要原因。谢谢。

0 投票
1 回答
275 浏览

java - 为什么我们需要 Java Enum 的 Set 和 Map

我是枚举的新手。在学习 Enum 时,我遇到了 EnumSet 和 EnumMap。我知道在使用 EnumSet 和 EnumMap 处理地图和设置时,它比这个问题的散列对应物要好得多。

为什么 EnumSet 或 EnumMap 可能比它们的散列对应物性能更高?

我的问题是

Java中的Enum在什么场景下需要Map和Set?

我对了解实际场景更感兴趣。

0 投票
1 回答
260 浏览

java - Eclipse 编译器和 javac 之间的差异 - 枚举、接口和泛型

以下代码在 Eclipse 中编译(并按预期运行测试):

但是,直接使用 (JDK 7) 或通过 Maven 编译javac失败并出现以下错误:

老实说,枚举 + 接口 + 类型参数(泛型)的复杂性一下子让我在编写代码时感到厌烦,但我认为我终于做对了。

目标是编写如下调用代码:

例如,在 Eclipse 中,以下测试编译并通过:

任何关于哪个是“正确的”、Eclipse 或 javac 的线索都值得赞赏。

还赞赏有关实现该想法的替代方法的任何建议:将类作为方法参数,可以在其中使用EnumSet.allOf()并且还确定 Enum 对象的类型EnumSet

顺便说一句,不要费心批评这种方法的目的;我已经从更有用/更有意义的代码中减少了它。我对讨论“从枚举类型中查找第一个元素”的优点不感兴趣——这不是这个问题的重点。