不可比较的类型 boolean 和 nulltype

incomparable types boolean and nulltype

当我以这种方式编译我的代码时,我得到了提到的错误:

public class SymTree{
public static boolean isSym(BT bt)
    {
        return(IsMirror(bt.left, bt.right));
    }
private static boolean IsMirror(BT lr,BT rr)
   {
       if(lr==rr==null)   (((ERROR HERE)))
        return true;
.....

然而当我这样编译时

    private static boolean IsMirror(BT lr,BT rr)
   {
       if(lr==rr)&&(lr==null))
        return true;
.......

我没有收到任何错误。错误是具有 nulltype 和布尔值的不可比较类型,但是我比较的对象中没有一个是布尔值 - 它们都是来自 BT(二叉树)class 的对象,已在别处定义。 谢谢!

这是因为在 if(lr==rr==null) 中,lr==rr 是一个布尔比较,您通过执行 ==nullnull 进行比较。

例如,如果假设 lr 等于 rr 那么 lr==rr 将 return true 接下来你要比较的是 true==null .在这里你会得到错误,因为 boolean 和 null 不可比较。

检查 (lr==rr==null)lr==rr 是一个 boolean。它很原始,无法与null.

相比

它给你这个错误的原因是因为当你写这个时:

if (lr==rr==null)

编译器将其解释为类似于以下之一:

if ((lr==rr) == null)

if (lr == (rr==null))

基本上,您是在将布尔条件(lr==rrrr==null)与可空类型进行比较,这没有意义,因为布尔是值类型并且可以 从不 为空。