gpt4 book ai didi

java - 将以下内容从 Java 转换为 Scala 时,为什么会收到 "will always yield true"警告?

转载 作者:行者123 更新时间:2023-11-30 07:32:01 26 4
gpt4 key购买 nike

下面是一段相当标准的 Java 代码,已被翻译成 Scala

 val result: ResultSet = statement.executeQuery(query)

while (result.next) {
if (result.getDouble("FIELD") != null) {

}
}

为什么会这样

warning: comparing values of types Double and Null using `!=' will always yield true?

最佳答案

如果我没理解错的话,那是因为 scala 中的 Double 永远不能为 Null。

在控制台中尝试一些简单的操作时出现了错误:

scala> val d:Double = null
<console>:13: error: type mismatch;
found : Null(null)
required: Double

另一方面,java.lang.Double 可以为空:

scala> val d:java.lang.Double = null
d: java.lang.Double = null

所以你的替身可能是 Scala Double 而不是 Java Double

编辑 我查了一下,看起来使用 java.sql.ResultSet 的 getDouble 方法将返回一个 scala Double 对象,这是警告的原因。至于检查 null 的替代方法,我不确定那是否是一个选项。在 Java 中,该方法返回原始 double,默认为 0.0。我可能是错的,但我认为 Java 原语永远不会是 null

Edit2 删除了一些猜测多于答案的内容。

关于java - 将以下内容从 Java 转换为 Scala 时,为什么会收到 "will always yield true"警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com