java中的不可比较类型
我得到了这段代码,对于这行代码,我得到了一个错误java中的不可比较类型,java,Java,我得到了这段代码,对于这行代码,我得到了一个错误不可比较的类型:java.lang.String和int if((this.name.String.compareTo(obj.name==0))和&(this.age=obj.age)) 方法如下: public int compareTo(Object o) { int result; AnyClass obj = (AnyClass)o; if ((this.name.String.compareTo(obj.name
不可比较的类型:java.lang.String和int
if((this.name.String.compareTo(obj.name==0))和&(this.age=obj.age))
方法如下:
public int compareTo(Object o)
{
int result;
AnyClass obj = (AnyClass)o;
if ((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))
{
result = 0;
}
else if (this.name.compareTo(obj.name) > 0)
{
result = 1;
}
else
{
result = -1;
}
return result;
}
compareTo
将Objec引用(您案例中的字符串)作为参数。但是您的代码compareTo(obj.name==0)
传递的布尔值不合适。((this.name.String.compareTo(obj.name==0))&(this.age=obj.age))
obj.name是一个字符串,0是一个int。这就是错误所在无法将字符串与整数进行比较:) 可以将字符串“001”转换为整数“1”;或将整数“1”转换为字符串“1”
请参阅或。
obj.name
是字符串,您正在将其与0
进行比较 我觉得你的支架位置不对
this.name.String.compareTo(obj.name == 0))
obj.name==0是比较字符串(name)和int(0)的地方。我猜您想在obj.name上使用compareTo,然后检查它是否等于零
我也认为在第二部分
(this.age = obj.age)
您希望使用==而不是=,因此我认为您希望使用的代码是:
((this.name.compareTo(obj.name)==0) && (this.age == obj.age))
如果你用代码来解释你的意图会更容易。第一个错误似乎是
compareTo
obj.name==0
中的比较
试一试
这就是我想你想要实现的。我认为代码
if ((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))
实际上应该是这样读的
if ((this.name.compareTo(obj.name) == 0) && (this.age == obj.age))
更改
==0
的位置(并将第二个=
更改为=
)可以使此代码变得有意义。此实现存在许多问题。看起来这是类AnyClass
的Comparable
实现,这意味着签名是错误的
AnyClass
应该实现compariable
,代码应该如下所示:
@Override
public int compareTo(AnyClass other)
{
int ret = name.compareTo(other.name);
return ret != 0 ? ret : Integer.compare(age, other.age);
}
如果您使用番石榴:
@Override
public int compareTo(AnyClass other)
{
return ComparisonChain.start().compare(name, other.name)
.compare(age, other.age).result();
}
使用此-
this.name.String
,您想要实现什么?这里是打字错误吗?我不太确定,我收到了这段代码,最初是这个.name.compareTo(),但在其他地方找到了这个.name.String,我认为这可能会有所帮助,这个.name.compareTo()给出了相同的错误如果这是AnyClass
的可比的实现,则签名为“关闭”:它应该是AnyClass
参数,而不是对象
。正确,但从this.name.String.compareTo(obj.name)==0)中删除字符串
。
非常感谢,修复了此问题!我必须像倒下一样把绳子取下来said@PawełChorążyk不客气,我键入了与您相同的答案:)
@Override
public int compareTo(AnyClass other)
{
return ComparisonChain.start().compare(name, other.name)
.compare(age, other.age).result();
}