当使用新的 Scala 3 的 flag 时-Yexplicit-nulls,每个没有显式非 null 注释的 Java 代码都被视为可为 null,因此每个不返回基本类型的 Java 方法都会T有效返回T | Null。
问题:在 Scala 中,String 只是java.lang.String. 由于核心 Java 不包含任何有关可为空性的注释,因此 Scala 3 将 String 方法的返回类型视为可为空。
示例:(通过 Scala REPL / sbt 控制台和 Gradle 进行尝试)
scala> val bla: String = null // check whether the compiler option is turned on
-- Error:
1 |val bla: String = null
| ^^^^
| Found: Null
| Required: String
scala> val bla: String …Run Code Online (Sandbox Code Playgroud)