Java值类型的当前状态
极客时间编辑部
讲述:丁婵大小:1.19M时长:02:36
值类型旨在成为未来 Java 版本中的第三种数据类型,当前已经有两种类型了,分别是原始类型和对象引用。有很多人表示,Java 值类型应该“写起来像类,用起来像 int”。这意味着它们应该是一个复合数据类型(代码与类相似),只是少了标识。
以 Java 平台目前的情况来看,运行环境并不会提供这种对内存布局的底层控制形式,在当前的版本中,所有组合数据类型都必须通过引用来访问。
如果想要将 Java 平台扩展为包含值类型,那么自然会产生一个问题,也就是值类型是否可以用作类型参数(type parameter)值。如果不可以,这就大大限制了它们的用处。
因此,值类型的设计包含的假设是,在增强的泛型中,值类型可以作为类型参数的值。
从 Java 8 开始,其设计目标之一就是提高 JDK 中,某些引用类型可能会在后续版本中发展成为值类型的可能。比如 Optional 和 LocalDateTime,它们都具有值类型所期望的属性,都是不可变的,并且都具备了值类型语义,也就是说,当且仅当所有字段的值都相等时,两个对象才相等。
但是也有一个问题,如果 JDK 类型有可能演变为值类型,那么值类型在类文件中应该怎样表示?在过去的几年中,为了确定在类文件中如何表示值类型,开发者们已经讨论过不同的提案和设计方案。
当前的方向是,继续使用与引用类型相同的描述符语法来描述值类型,这种方法具有保持向后兼容的优点,向后兼容从一开始就是 Java 的首要设计原则。
但是,这种设计还存在一个问题,类型描述符实际上是一种不完整的描述,它不区分特定类型是否是真正的值类型。
如果你对此感兴趣,可以点击文章中的链接,查看更多信息。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论