文 | 白开水
出品 | OSC开源社区(ID:oschina2013)Infoworld 消息指出,根据 OpenJDK 提案,Java 将获得通用泛型(universal generics),此举旨在使该语言更易于使用。不过该规划本身需要花费数年时间才能实现。 通用泛型最初将通过 OpenJDK 社区中的三个提案来实现。 甲骨文方面表示,这些提议将极大地改变 Java 语言和 JVM,结合类的灵活性和基元的性能。一切(包括基元)都将成为一个对象。但是所选择的路径并不会降低基元的性能,而是使类的性能与基元一样。 三个 JDK Enhancement Proposals(JEP)中的每一个都提供了不同的功能,但想要达到预期的效果,则需要结合这三个提案。
其中最主要的是一份于 2 月创建并于 10 月 29 日更新的 JEP 草案,它要求通过允许 Java 类型变量覆盖这两种类型来统一对泛型代码中引用和原始值类型的处理。将会产生新的 warnings,以维护通用代码的安全保证。 使用用户声明的原始对象增强 Java 对象模型的第二个 JEP 将作为先决条件;计划将基本基元与对象统一起来的第三个 JEP,预计也会推进。其他 JEP 则将随之更新标准库、解决 null warnings 和使库为专业化做好准备,并在 JVM 中引入通用 API 的运行时专业化。搜索公众号互联网架构师回复“2T”,送你一份惊喜礼包。
通用泛型计划提倡让 generic API 直接支持 primitive value types,以便直接对 custom-defined primitives 进行操作;引用类型也将被支持。
通过将基元与引用统一起来,可以采取下一步措施,允许类型参数在所有类型上进行范围化。
值得一提的是,Java 并不是唯一关注泛型功能的语言,Go 1.18 也计划支持泛型。 相关阅读:2T架构师学习资料干货分享
PS:如果觉得我的分享不错,欢迎大家随手点赞、转发、在看。