二元运算符的不良操作数类型

问题描述:

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

下面是一个例子:

if(compare(data < root.data)) 

我得到的错误上面说的。有关如何解决它的任何提示?

我有这样的设置在它的开始:

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

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

'if(compare(data,root.data)

Java不支持操作符重载,该<运营商定义的基本数据类型,如(INT,双..)。

它没有为非基元类型或用户定义类型定义。您应该使用Comparable接口而不是<。

你叫data < root.data但运营商<或其他类似的运营商只为原始数据类型intlongdoublefloat定义

您不能在对象上调用<,与支持运算符的其他语言相比


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

data.compareTo(root.data); 

,它返回一个 - ,积极 - 或 - 值的基础上,如果第一个参数是更大等于第二个参数。

所以相当于data < root.data然后将:

data.compareTo(root.data) < 0 

作为示例类String已实施Comparable,它返回字典顺序。 "A".compareTo("B")因此将是否定,这意味着"A"是词典编码小于"B"