今天看啥  ›  专栏  ›  InfoQ

新的JEP草案发布,将在Java中引入可选空值标记

InfoQ  · 公众号  · 科技媒体  · 2024-08-22 15:02
    

主要观点总结

文章介绍了Java语言的空值处理新特性JEP 8303099草案和JSpecify 1.0.0版本的发布。新特性引入了类型使用注解,用于指示静态类型的空值状态,并探讨了Null-Restricted和Nullable类型的概念。文章还引述了InfoQ对Kevin Bourrillion的采访,涉及该项目的专业背景、经验、与JSpecify的重叠、与Project Valhalla的关系,以及对开发者采用JSpecify的建议。

关键观点总结

关键观点1: JEP 8303099草案和JSpecify 1.0.0版本的发布

这个新特性引入了类型使用注解,用于指示静态类型的空值状态,借鉴了Kotlin的标记方式。

关键观点2: Null-Restricted和Nullable类型的概念

JEP探讨了将可选的空值标记引入到Java中的可能性,核心是在类型使用上引入明确的标记。

关键观点3: 对开发者采用JSpecify的建议

尽管注解的定义已经相当精确,但规范仍可能经历细微的调整。建议开发者开始为新代码添加空值检查,并逐步清理警告。重点是新代码从现在开始要有空值检查。

关键观点4: InfoQ对Kevin Bourrillion的采访内容

采访涉及该项目的专业背景、经验、与JSpecify工作的重叠、与Project Valhalla的关系等。


文章预览

作者 | Ben Evans 译者 | 明知山 策划 | 丁晓昀 之前我们报道了 JSpecify 1.0.0 版本的发布。这个版本主要引入了类型使用注解,用于指示静态类型的空值状态。 与之相关的是,JEP 8303099 草案 最近已对外公布。这个 JEP 探讨了 Null-Restricted 和 Nullable 类型,旨在将 可选的空值标记 引入到 Java 中。 该提案的核心是在类型使用上引入明确的标记——不仅仅是注解,指明在特定使用场景中允许的值是否包括。需要注意的是,这个提案目前还处于初步开发阶段(例如,它尚未获得正式的 JEP 编号),因此其语法在未来有可能会发生变化。尽管如此,目前的提案借鉴了 Kotlin 的标记方式,因此,对于类型,有三种使用方式: Foo! 表示 Null-Restricted ——这种类型可接受的值不包括; Foo? 表示 Nullable ——这种类型可接受的值包括 ; Foo 没有明确指定是否接受。 使用 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览