据我了解,以下代码应该运行良好。
但是,当我尝试编译时,它在compareTo
处失败
public class Test {
Comparable<?> getMinimum() {
return null;
}
public int getPreviousValue(double nv) {
return getMinimum().compareTo(nv);
}
}
所以我的问题是,如果编译失败,为什么会这样-我们不允许将null与double进行比较吗?
最佳答案
这里的问题不是该方法的空结果。
问题在于,编译器不知道如何在compareTo(double)
返回的内容上调用getMinimum()
。
您必须将签名更改为Comparable<Double> getMinimum()
才能起作用!如果您的可比对象支持,则只能与特定类型的数字进行比较!
当然,在运行时,您将面对NPE。当然,还有:一些代码检查工具可以在编译时识别出这种特定的NPE情况。
关于java - 空不能比作双-为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52330582/