- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
Enum sets are represented internally as bit vectors.
现在我想知道 - 通过网络将(标准 Java 序列化的)EnumSet 对象发送到某些 可能 具有不同版本的 JVM 时的行为是什么底层枚举类?
换句话说:当我发送了一些 Set<MyEnum>
很可能在 other JVM 上的反序列化期间抛出异常(在 my JVM 使用一些 MyEnum.NEW_GUY
的情况下 other JVM 不知道)。在这种情况下,反序列化会尝试实例化其他 JVM 上的类中不存在的枚举常量。
但假设 EnumSet 不传输枚举常量实例(只是设置了一些位,有些位为真,有些位为假)——当序列化的 EnumSet 包含时会发生什么 MyEnum.NEW_GUY
?
我试图确定一个规范来告诉我应该发生什么(而不是假设这是一个实现细节),但到目前为止运气不好。
最佳答案
仅关于实现(使用 Oracle Java 8),答案是:它“不仅仅是”一个位集。
含义:可以快速编写将 EnumSet 实例序列化到文件中的测试,然后更改枚举类,并运行从文件中读回集合的代码。
结果:
java.io.InvalidObjectException: enum constant B does not exist in class com.ibm.hwmca.z.managed.TestEnum
被抛出换句话说:该测试表明序列化的 EnumSet 确实包含比普通位集“更多”的信息。该实现能够 A) 检测“丢失的”枚举常量和 B) 处理仅影响条目排序的枚举类的更改。与@Seelenvirtuose 的评论相匹配,即序列化 EnumSet 不是位 vector ,而是一个包含实际枚举常量的数组(因此对于完全相同的版本冲突是开放的)。
仍在搜索观察到的行为是否有规范。
关于java - EnumSets 在类版本控制方面的特点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48706070/
什么是 Kotlin? Kotlin 是一种现代、流行的编程语言,由 JetBrains 在 2016 年发布。 自发布以来,它已经变得非常流行,因为它与 Java 兼容(Java 是目前最流行的
不要问如何,但我以某种方式创建了一个带有单个句点字符 (.) 的目录名称,并且由于这是目录导航的特殊字符,我不知道如何删除它! drwxr-xr-x 6 admin admin 4096 Nov
不要问如何,但我以某种方式创建了一个带有单个句点字符 (.) 的目录名称,并且由于这是目录导航的特殊字符,我不知道如何删除它! drwxr-xr-x 6 admin admin 4096 Nov
我有一个小文件,其中包含一些我想用“|”分割的内容性格。 当我尝试使用任何其他字符(例如“>”)时,它工作得很好,但使用“|”时效果很好。性格,有一些意想不到的结果。 该行本身(此处带有 > 字符)
我想使用mysql在数据库中保存额外的生僻汉字,但继续显示???将文本插入表格后。之前我搜索过如何在mysql数据中插入任意4字节的汉字,并按照过程( "Incorrect string value"
这个字符是什么意思? 最佳答案 那将是一个 HTML 编码的换行字符(使用十六进制值)。 十进制值为 关于html - 是什么 特点?,我们在Stack Overflow上找到一个类似的问题: htt
1. 引言 在Go语言中, init() 函数是一种特殊的函数,用于在程序启动时自动执行一次。它的存在为我们提供了一种机制,可以在程序启动时进行一些必要的初始化操作,为程序的正常运行做好准
我不明白哪些行应该以 JQuery 中的分号 ; 字符终止。 目前,出于安全考虑,我只是用它终止每一行。但是有什么地方和时间使用它的规则吗? 最佳答案 首先,JQuery 是一个库(Javascrip
terraform init成功初始化但卡在 terraform 计划上。 该错误与功能块有关。我不确定在哪里添加功能块: Insufficient features blocks (source c
在哪里可以阅读有关 cakephp 2.0 功能的更多信息? 因为我可以找到 symfony 2.0 演示文稿,但找不到 cakephp 2.0 谢谢 最佳答案 CakePHP 2.x 。右侧有迁移指
我注意到我的 double 包含不同精度的字符,具体取决于区域设置。 例如: 3,47 或 3.45 如何强制 double 始终包含 . 精度字符? 问题是,一旦我将包含此 double 值的类序列
我想将“U+1F1FA U+1F1F8”等 Unicode 代码点表示法转换为“🇺🇸”。 在 javaScript 中,到目前为止我尝试过的是 String.fromCharCode(parseI
将 — 发送到 foursquare 时,它显示为 ?在他们的网站上,而不是——,长破折号。它在 Android 应用程序中看起来很好(我使用\u2014 显示它),但在 foursquare 网
到目前为止,我知道 EOF 是一个特殊字符,自动插入到文本文件的末尾以指示其结束。但我现在觉得需要对此进行更多澄清。我在 Google 和 Wikipedia 页面上查看了 EOF,但他们无法回答以下
我正在尝试使用基于 .split-string 的“split-string”函数来拆分字符串。特点。但(split-string "1.2.3"".") 根本不起作用。它只是返回一个可变数量的空字符
这可能是重复的。我已经搜索过,但不确定要使用哪些术语。如果你能找到重复的,谢谢,我会删除这个问题。 我听说 history.js 是“最好的”深度链接 ajax 库,因为它对旧版浏览器的兼容性最好。然
我是一名优秀的程序员,十分优秀!