质量推广提醒 - 内部类构造函数中的新空检查

💡 原文英文,约300词,阅读约需2分钟。
📝

内容提要

OpenJDK质量小组正在推动使用OpenJDK构建测试FOSS项目,以提升发布质量。Java 25将确保内部类构造函数的封闭实例引用始终非空,并在JDK 25中引入空检查,这可能导致使用反射等方法时出现新的空指针异常。

🎯

关键要点

  • OpenJDK质量小组正在推动使用OpenJDK构建测试FOSS项目,以提升发布质量。
  • Java 25将确保内部类构造函数的封闭实例引用始终非空。
  • JDK 25将引入空检查,可能导致使用反射等方法时出现新的空指针异常。
  • Java语言规范要求内部类构造函数的使用场所进行空检查,但不强制要求在声明处进行检查。
  • 从JDK 25开始,javac将为内部类构造函数的封闭实例发出空检查。
  • 使用核心反射、方法句柄或直接字节码调用传递空引用的代码可能会导致新的空指针异常。
  • 可以通过标志-XDnullCheckOuterThis=(true|false)来防止这些额外检查的发出,但这只是临时解决方案。

延伸问答

Java 25对内部类构造函数有什么新要求?

Java 25将确保内部类构造函数的封闭实例引用始终非空,并引入空检查。

JDK 25引入的空检查会有什么影响?

JDK 25的空检查可能导致使用反射等方法时出现新的空指针异常。

如何防止JDK 25中的额外空检查?

可以使用标志-XDnullCheckOuterThis=(true|false)来防止这些额外检查的发出,但这只是临时解决方案。

OpenJDK质量小组的目标是什么?

OpenJDK质量小组正在推动使用OpenJDK构建测试FOSS项目,以提升发布质量。

Java语言规范对内部类构造函数的空检查有什么规定?

Java语言规范要求内部类构造函数的使用场所进行空检查,但不强制要求在声明处进行检查。

使用反射传递空引用会有什么后果?

使用核心反射、方法句柄或直接字节码调用传递空引用的代码可能会导致新的空指针异常。

➡️

继续阅读