首页 文章

二元运算符的错误操作数类型[重复]

提问于
浏览
0

这个问题在这里已有答案:

所以我试图使代码通用,我遇到了这个问题,我得到一个错误,说明二元运算符的坏操作数类型 .

这是一个例子:

if(compare(data < root.data))

我得到上面说的错误 . 有关如何修复它的任何提示?

我在开始时有这个设置:

class Node<T>
{
   T data;
   Node<T> left, right;

Node(T data)
    {
    this.data = data;
    }
}

2 回答

  • 0

    Java不支持运算符重载,<运算符是为原始数据类型定义的,如(int,double ..) .

    它没有为非基本类型或用户定义类型定义 .

    您应该使用Comparable接口而不是< .

  • 0

    您调用 data < root.data 但操作符 < 或其他类似操作符 only defined 适用于 primitive datatypes ,如 intlongdoublefloat .

    与其他支持 operator overloading 的语言相比,您无法在对象上调用 < .


    但是,您可以让对象实现 Comparabledocumentation),它提供了基本上相同的 compareTo 方法 . 然后你可以像这样调用它:

    data.compareTo(root.data);
    

    并且它返回 negative - , positive - 或 zero -value,基于第一个参数是 lessgreater 还是 equal 第二个参数 .

    那么相当于 data < root.data 将是:

    data.compareTo(root.data) < 0
    

    作为示例,类 String 已实现 Comparable ,它返回字典顺序 . "A".compareTo("B") 因此会 negative ,这意味着 "A" 的字典小于 "B" .

相关问题