问题标签 [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.
java - 这个 Java EnumSet 初始化构造是如何工作的?
我们有构建EnumMap<K,V>
实例的习惯,如下EnumMapExample.java
例所示:
可能是一个快速回答的问题,但我无法为我的谷歌找到这种填充private final EnumMap<TestEnum, String> myEnumMap
2 个(人为的)枚举类型的方法是如何调用的以及它是如何工作的?
问题细化:所以我叫注意分号前的new EnumMap<K,V>(SomeEnum.class){{ /* initialization code */ }};
双花括号。那个双括号是什么东西?{{ }}
;
java - Java 中的线程安全枚举集
我使用以下代码来初始化 EnumSet 的同步实例:
我有两个问题:
- 在这种情况下,我是否保留了 EnumSet 的所有优点,例如紧凑性和效率?
- 是否有更多...比方说...语义丰富的方法来获取 EnumSet 的空且同步的实例?
java - 检查枚举集是否有相同的枚举值
我有两个EnumSet
s。
我想找出两组中都存在哪些值。(在这种情况下,A3
。)
有什么快速的方法吗?
java - 如何在 Java 中正确扩展/继承 EnumSet?
我试图扩展EnumSet
以Comparable
在 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 method
。addRange
它为和回显此错误complement
。我可以从:复制addAll
签名。但是,当我尝试从 API 文档复制其他方法签名 ( , ) 时,它们似乎不存在。我不知所措。Set
public boolean addAll(Collection<? extends Suits> collection)
addRange
complement
我EnumMap
改用了,效果很好。EnumSet
似乎是不可能的。我错过了什么吗?
java - 向 EnumSet 添加类型参数总是给我“绑定不匹配”
我在下面有这段代码:
我想重载一种方法,如下所示,并获得绑定不匹配:
我改到下面,它不起作用。
为什么?我该怎么办?
java - 只读 EnumSet 迭代器线程安全吗?
我有一个EnumSet
最终的和不可变的,即在构造函数中初始化一次。
contains()
这个EnumSet
线程上的方法安全吗?它在内部使用迭代器进行包含检查。因此,如果两个线程同时调用contains()
一个调用中的迭代器位置是否会影响另一个?还是迭代器在这两个线程调用中具有不同的实例?
java - java EnumSet,不兼容的类型:推理变量 E 的边界不兼容
我有一个下面的方法,它返回一个包含所有元素的枚举集Types
:
如下所示Types
:enum
GroupType
界面是:
NamedType
界面:
编译时,出现以下错误:
java - 在 Map 上操作时的问题, 对象> 在 Java 中
member
inMyClass
用于存储几种不同Enum 类型的EnumSet。在实现相关方法时,我遇到了一些问题:当我尝试这样调用方法时:
错误来了:
putEnumSet(Class<E>, E)
类型中的方法MyClass<Word>
不适用于参数(Class<capture#1-of ? extends EnumSet>, EnumSet<Category>)
如何处理这个问题?我认为它可能来自raw type或type erasure,但我不知道主要原因。谢谢。
java - 为什么我们需要 Java Enum 的 Set 和 Map
我是枚举的新手。在学习 Enum 时,我遇到了 EnumSet 和 EnumMap。我知道在使用 EnumSet 和 EnumMap 处理地图和设置时,它比这个问题的散列对应物要好得多。
为什么 EnumSet 或 EnumMap 可能比它们的散列对应物性能更高?
我的问题是
Java中的Enum在什么场景下需要Map和Set?
我对了解实际场景更感兴趣。
java - Eclipse 编译器和 javac 之间的差异 - 枚举、接口和泛型
以下代码在 Eclipse 中编译(并按预期运行测试):
但是,直接使用 (JDK 7) 或通过 Maven 编译javac
失败并出现以下错误:
老实说,枚举 + 接口 + 类型参数(泛型)的复杂性一下子让我在编写代码时感到厌烦,但我认为我终于做对了。
目标是编写如下调用代码:
例如,在 Eclipse 中,以下测试编译并通过:
任何关于哪个是“正确的”、Eclipse 或 javac 的线索都值得赞赏。
还赞赏有关实现该想法的替代方法的任何建议:将类作为方法参数,可以在其中使用EnumSet.allOf()
并且还确定 Enum 对象的类型EnumSet
顺便说一句,不要费心批评这种方法的目的;我已经从更有用/更有意义的代码中减少了它。我对讨论“从枚举类型中查找第一个元素”的优点不感兴趣——这不是这个问题的重点。