二元运算符的不良操作数类型
问题描述:
所以我试图使代码通用,我遇到了这个问题,我得到一个错误,说二进制运算符的不良操作数类型。二元运算符的不良操作数类型
下面是一个例子:
if(compare(data < root.data))
我得到的错误上面说的。有关如何解决它的任何提示?
我有这样的设置在它的开始:
class Node<T>
{
T data;
Node<T> left, right;
Node(T data)
{
this.data = data;
}
}
答
Java不支持操作符重载,该<运营商定义的基本数据类型,如(INT,双..)。
它没有为非基元类型或用户定义类型定义。您应该使用Comparable接口而不是<。
答
你叫data < root.data
但运营商<
或其他类似的运营商只为原始数据类型像int
,long
,double
,float
定义。
您不能在对象上调用<
,与支持运算符的其他语言相比。
但是你可以让对象实现Comparable
(documentation),它提供了一个compareTo
方法基本上不相同。然后你可以这样调用:
data.compareTo(root.data);
,它返回一个负 - ,积极 - 或零 - 值的基础上,如果第一个参数是少,更大或等于第二个参数。
所以相当于data < root.data
然后将:
data.compareTo(root.data) < 0
作为示例类String
已实施Comparable
,它返回字典顺序。 "A".compareTo("B")
因此将是否定,这意味着"A"
是词典编码小于"B"
。
'if(compare(data,root.data)