无与伦比的类型boolean和nulltype

时间:2016-02-05 17:31:40

标签: java comparison

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

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和boolean的无法比较的类型,但是我的比较对象中没有一个是boolean-它们都是来自BT(二叉树)类的对象,它已在别处定义。 谢谢!

3 个答案:

答案 0 :(得分:2)

检查Map(rep, a, b) (lr==rr==null)lr==rr。它是原始的,无法与boolean进行比较。

答案 1 :(得分:1)

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

if (lr==rr==null)

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

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

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

基本上,您将布尔条件(lr==rrrr==null)与可空类型进行比较,这是不合理的,因为布尔值是值类型并且可以永远不会为空。

答案 2 :(得分:0)

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

例如,如果假设==null等于lr,则rr将返回lr==rr,然后您将比较true。在这里你会得到错误,因为boolean和null是不可比较的。