草庐IT

java - EnumSet 序列化

我刚刚花了几个小时调试我的应用程序,而且我相信我偶然发现了一个(另一个o_O)Java错误...嗅探...我希望不是,因为这会让人难过:(我正在做以下事情:创建带有一些标志的EnumSet掩码序列化它(使用ObjectOutputStream.writeObject(mask))清除并设置掩码中的一些其他标志再次序列化预期结果:第二个序列化对象与第一个不同(反射(reflect)实例的变化)得到的结果:第二个序列化对象是第一个对象的精确副本代码:enumMyEnum{ONE,TWO}@TestpublicvoidtestEnumSetSerialize()throwsException

java - 泛型和类 <?扩展 Enum<?>>,EnumSet.allOf(class) 与 class.getEnumConstants()

我有以下BeanValidation代码可以正常工作,并允许验证注释的bean:@EnumValue(enumClass=MyTestEnum.class)privateStringfield;publicenumMyTestEnum{VAL1,VAL2;}只有当字段值为“VAL1”或“VAL2”时才会被验证。publicclassEnumNameValidatorimplementsConstraintValidator{privateSetAVAILABLE_ENUM_NAMES;@Overridepublicvoidinitialize(EnumValueenumValue){C

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

以下内容来自JavadocofEnumMap的实现说明部分:Implementationnote:Allbasicoperationsexecuteinconstanttime.Theyarelikely(thoughnotguaranteed)tobefasterthantheirHashMapcounterparts.我在EnumSet的java文档中也看到了类似的行。我想知道为什么EnumSets和EnumMaps比它们的散列对应物更快? 最佳答案 EnumSet由位数组支持。由于您可以放入的不同元素的数量EnumSet事先知

java枚举排序

我正在使用java枚举来定义如何呈现带有按钮的模态窗口(Vaadin处理呈现)。我的问题是,当我运行gui时,我的按钮每次都以随机顺序出现。所以我的问题是,因为我使用枚举集来固定我的按钮,那会是无序的吗?使其成为有序列表的最佳方法是什么?我的设置枚举publicenumMODAL_SETTINGS{NEW_MODAL_WINDOW("menu.context.new","400",MODAL_BUTTON.SAVE,MODAL_BUTTON.CANCEL),EDIT_MODAL_WINDOW("menu.context.modify","400",MODAL_BUTTON.UPDATE

java - 为什么 EnumMap<T>.keySet() 返回 Set<T>() 而不是 EnumSet<T>()?

我正在编写一个包含大量枚举的程序,而且我不得不返回很多EnumMap的键集。但是EnumMap.keySet()返回Set(),所以为了得到EnumSet我想要,我必须使用强制转换:EnumMapmyMap=getMap();EnumSetmyEnum=(EnumSet)myMap.keySet();如果我不转换,编译器会提示类型不匹配;它不能从Set转换至EnumSet.似乎不必强制转换它,因为EnumMap的键始终是一个枚举。有谁知道为什么keySet()方法是这样构造的?我有时认为它可能与EnumSet是一个抽象类有关,但肯定是EnumMap可以只返回EnumSet的任何工厂方法

java - 如何获取枚举的子集

大多数情况下,包含所有元素的枚举显示在用户界面的下拉列表中。我们需要在用户界面中仅显示5个字段中的2个。通过某种方式利用可用于枚举的相同函数,获取此数据的更简单方法是什么。enumColor{RED,GREEN,BLACK,BLUE,YELLOW};我们有要求在某个用户界面中只显示{RED,BLUE}? 最佳答案 听起来像是EnumSet的工作:EnumSetset=EnumSet.of(Color.RED,Color.BLUE); 关于java-如何获取枚举的子集,我们在StackOv

49天精通Java,第26天,LinkedHashSet、LinkedHashMap、EnumSet、EnumMap

目录一、链接散列集LinkedHashSet二、链接散列映射LinkedHashMap三、枚举集EnumSet1、EnumSet2、枚举集可以用来实现一些特殊的功能,例如:3、枚举集的常用方法包括:四、枚举映射EnumMap1、EnumMap2、枚举映射可以用来实现一些特殊的功能,例如:3、枚举映射的常用方法包括:大家好,我是哪吒。一、链接散列集LinkedHashSetJava中的链接散列集指的是HashSet和LinkedHashSet这两个集合实现类。它们都是基于哈希表(HashTable)实现的,链式散列是解决哈希冲突的一种方法。HashSet和LinkedHashSet内部使用哈希表

49天精通Java,第26天,LinkedHashSet、LinkedHashMap、EnumSet、EnumMap

目录一、链接散列集LinkedHashSet二、链接散列映射LinkedHashMap三、枚举集EnumSet1、EnumSet2、枚举集可以用来实现一些特殊的功能,例如:3、枚举集的常用方法包括:四、枚举映射EnumMap1、EnumMap2、枚举映射可以用来实现一些特殊的功能,例如:3、枚举映射的常用方法包括:大家好,我是哪吒。一、链接散列集LinkedHashSetJava中的链接散列集指的是HashSet和LinkedHashSet这两个集合实现类。它们都是基于哈希表(HashTable)实现的,链式散列是解决哈希冲突的一种方法。HashSet和LinkedHashSet内部使用哈希表

java - 将 EnumSet 存储在数据库中?

因此,在C++/C#中,您可以创建标志枚举来保存多个值,并且在数据库中存储一个有意义的整数当然是微不足道的。在Java中,您有EnumSet,这似乎是一种在内存中传递枚举的好方法,但是如何将组合的EnumSet输出为整数以进行存储?还有其他方法可以解决这个问题吗? 最佳答案 将序数存储为EnumSet的表示不是一个好主意。序数取决于Enum类(arelateddiscussionishere)中定义的顺序。您的数据库可能很容易被更改Enum值顺序或在中间引入新值的重构破坏。您必须引入单个枚举值的稳定表示。这些可以再次是int值,并在

java - 将 EnumSet 存储在数据库中?

因此,在C++/C#中,您可以创建标志枚举来保存多个值,并且在数据库中存储一个有意义的整数当然是微不足道的。在Java中,您有EnumSet,这似乎是一种在内存中传递枚举的好方法,但是如何将组合的EnumSet输出为整数以进行存储?还有其他方法可以解决这个问题吗? 最佳答案 将序数存储为EnumSet的表示不是一个好主意。序数取决于Enum类(arelateddiscussionishere)中定义的顺序。您的数据库可能很容易被更改Enum值顺序或在中间引入新值的重构破坏。您必须引入单个枚举值的稳定表示。这些可以再次是int值,并在