主要观点总结
文章介绍了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 没有明确指定是否接受。 使用
………………………………