对于这行代码,我得到了这段代码,并收到错误incomparable types: java.lang.String and 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;
}
答案 0 :(得分:6)
我认为你的支架位置不正确,
this.name.String.compareTo(obj.name == 0))
obj.name == 0是您可能将String(name)与int(0)进行比较的地方。我想你想在obj.name上使用compareTo然后检查它是否等于零。
我也认为在第二部分
(this.age = obj.age)
你想使用==而不是=,所以我认为你想要使用的代码是:
((this.name.compareTo(obj.name)==0) && (this.age == obj.age))
答案 1 :(得分:2)
答案 2 :(得分:1)
compareTo
接受Object引用(在您的情况下为一个字符串)作为参数。但是你的代码compareTo(obj.name == 0)
传入布尔值,这是不合适的。
答案 3 :(得分:1)
我认为代码
if ((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))
实际上应该像这样阅读
if ((this.name.compareTo(obj.name) == 0) && (this.age == obj.age))
更改== 0
的位置(并将第二个=
更改为==
)会使此代码有意义。
答案 4 :(得分:1)
此实施存在许多问题。对于类Comparable
来说,这似乎是AnyClass
的实现,这意味着签名是错误的。
AnyClass
应该实现Comparable<AnyClass>
,代码应如下所示:
@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();
}
答案 5 :(得分:0)
((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))
obj.name是一个String,0是一个int。那就是你得到错误的地方
答案 6 :(得分:0)
obj.name
是字符串,您将其与0
进行比较。
答案 7 :(得分:0)
如果您使用代码解释您的意图,则会更容易。第一个错误似乎是compareTo
obj.name == 0
中的比较。
尝试
if ((this.name.String.compareTo(obj.name) == 0) && (this.age == obj.age))
我想你想要实现的目标。