|
|
1
6
据我所知,这还没有曝光。你基本上可以自己重写它——看看EnumSet的代码来了解代码——但很遗憾,没有更好的方法来理解它:( |
|
|
2
5
我认为这不能以通用的方式完成。转换为long非常容易:
我不知道如何才能从long back转换为EnumSet。据我所知,没有办法(除了反射)获取枚举的值数组来进行查找。你必须在每个枚举的基础上做这件事。 我认为序列化是应该走的路。仅仅序列化为long更容易受到版本错误的影响,或者由于重新排列枚举中的常量而导致的错误。 |
|
|
3
2
如果用枚举的类添加参数,这是可能的。将枚举集转换为字节的示例:
|
|
|
4
1
正如Jon Skeet所提到的,这些信息没有公开。但Dave Ray展示了如何轻松计算。 我制作了一个库,使这种转换变得简单得多。如果你使用“long”,它还会检查元素是否真的不超过64个。我必须创建一个新的数据类型,但它可以像BitSet或EnumSet一样使用。请注意,这需要Java 8或更高版本,因为它使用默认实现的接口。 以下是链接: http://claude-martin.ch/enumbitset/ 例子:
|
|
6
0
EnumSet的(典型的-不是强制的)实现使用枚举值的序号。你不应该假设序数总是保持不变。因此,如果你想使用序数有效地存储枚举集,你还应该存储一个从枚举名到序数的映射(可能存储为枚举名序列)。 EnumSet本身似乎没有很好的序列化形式。它只是转储了一个枚举。其主体将被转录为一系列整数对象引用,而不是位集。 |
|
|
7
0
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |