尽管有前途的Java值类型不是迫在眉睫,但我偶尔还是喜欢在OpenJDK valhalla-dev邮件列表中打听一下,以了解事情的进展情况并了解即将发生的事情。 诚然,由于我对所用术语的了解有限,并且其中某些消息的底层细节,使我无法理解某些讨论。 但是,有时我很了解所写的消息和线程并发现有趣。 最近的一个例子是“ 空值类型? ”线程。
RémiForax通过询问“是LW1的空值类型吗?”启动线程。 该问题附带的示例错误消息显示了LinkageError和ClassFormatError ,并显示消息“值类型还不支持零实例大小”。 Tobias Hartmann 对这个问题的回答是:“不, LW1不计划支持空值类型。”
在继续讨论线程的其余部分(这是我最感兴趣的部分)之前,我将快速讨论“ LW1”。 在大卫·西姆斯(David Simms)的同一OpenJDK邮件列表中的消息中,“ [lworld] LW1 –'Minimal LWorld' ”中说,“我们正在以'L Lworld '(LW1)接近某种'可用'的东西”,而“我们将正在将原型制作转移到里程碑式稳定。” 该消息指出“标签”为“ lw1” , affected-version
和fixed-version
均为“ repo-valhalla
”。 换句话说,“ LW1”是用于跟踪与“最小L世界”实现有关的错误和问题的标签。 您可以参考约翰·罗斯(John Rose)在2017年11月19日发布的消息 “ 放弃所有U型,欢迎来到L-world(或者我在伯灵顿学到的东西) ”,以介绍“ L世界”一词及其在价值类型上的含义。 。
返回到“空值类型?” 线程, 柯克·佩珀丁 ( Kirk Pepperdine) 问了一个同样出现在我身上的问题 :“值类型如何为空?” 他补充说:“什么是空整数? 空字符串?” 他说他“很好奇”,而现在我也是。 以下是信息反馈的摘要:
- RémiForax :“ [type]表示缺少值,如unit , void或bottom ”
- 约翰·罗斯(John Rose)提供了 此信息链接 。
- RémiForax :“代表投掷结果的类型”
- RémiForax :“允许将
HashSet<E>
定义为HashMap<E,Empty>
”- Brian Goetz的信息详细说明了此值:“零长度值可能非常有用,只是不能直接使用。
- RémiForax :“类似于标记类型的可转换类型,用于分隔参数”( 请参阅此示例的消息 )
我还喜欢该线程上的最后的Kirk Pepperdine消息(在撰写本文时),他总结说:“感觉就像是null的值类型版本。”
顺便说一句, 在valhalla-dev邮件列表的2018年6月存档中还有一些其他有趣的消息和主题。 这里是其中的一些:
- Karen Kinnears发布了“ Valhalla VM笔记6月6日星期三 ”
- 我不了解这里记录的每个细节,但是很有趣的是看到了一些与潜在功能相关的潜在时间表。
- RémiForax发布了“ Integer vs IntBox基准 ”
- 与
int
和Integer
相比,演示了IntBox
结果(Forax将其描述为“存储int的值类型”),并且IntBox
的结果与int
相当(并且显着优于Integer
)。
- 与
- Sergey Kuksenko发表了“ Valhalla LWorld microbencmarks ”
- 该消息不提供基准测试结果,而是说明“ Valhalla LWorld微基准的初始集合”已放置在“
test/benchmarks
目录下的valhalla存储库中”。
- 该消息不提供基准测试结果,而是说明“ Valhalla LWorld微基准的初始集合”已放置在“
- Mandy Chung发表了“ 库支持,用于为值类型的hashCode / equals / toString生成BSM ”
- 基于约翰·罗斯(John Rose)的“ 值类型哈希码 ”,被描述为“为
hashCode
/equals
/toString
为值类型生成BSM的初始库支持”。
- 基于约翰·罗斯(John Rose)的“ 值类型哈希码 ”,被描述为“为
- 约翰·罗斯(John Rose)发布了“ 固定池期货 ”
我希望有一天能够在我的日常Java代码中应用值类型。 在此之前,思考可能会发生什么,并查看为此付出了多少工作是很有趣的。
翻译自: https://www.javacodegeeks.com/2018/06/java-future-empty-value-types.html