Valhalla
布莱恩·格茨在去年底发表了一篇名为State of Valhalla的文章,里面信息量非常大,里面提到早在2014年Java项目组就启动了一个名叫Valhalla的项目,这个项目将为JVM平台带来更加灵活的、扁平化的数据类型。在2021年该项目将有进一步的动作,值对象(value objects)、原始类(primitive classes)、专用泛型(specialized generics)即将引入JVM平台。今天先来聊聊这个值对象是个啥。
我们知道什么是“值”,什么是“对象”,但是什么是“值对象”呢?不光你们懵逼,我也懵逼,来一起研究研究。
Java类型系统的不足
Java类型系统由内置的10种类型组成,这10种类型无法直接表达复杂的数据结构,例如字符串、三维坐标、空间向量等等,但是开发者可以用这10种类型来为业务实体建模,Java的类型体系是非常有用的。
但是Java类型仍然存在“缺陷”, 同一个类的两个对象包含完全相同的属性,但是它们的内存寻址是不一样的。<