你必须写
boolean sameName(MovieCard movieCard) {
if (this.equals(movieCard)){
return true;
} else{
return false;
}
}
因为this.MovieCard
指向您Moviecard
班级中的一个变量。
除了您的语法错误之外,您的 equals 实现除了默认实现之外什么也不做
请记住 ,只有当and 指向相同的引用if (this.equals(movieCard)){
时,这才是正确的。movieCard
this
因为,
java.lang.Objectequals()
提供的类的默认实现比较内存位置,并且仅当两个引用变量指向相同的内存位置时才为真,即本质上它们是相同的对象。return
我猜你需要在你的MovieCard
类中重写 equals 方法,这样比较的字段MovieCard's
是否相同。
喜欢阅读,如何本质上Ovveride
等于。
您正朝着错误的方向前进,请参阅上面链接中的示例,然后以这样的方式实现等于,即如果 MovieCardequals
中的所有字段都与传递的对象的字段相同。那将是您要求的实施。
一般来说,一个比较两个 Tiger 对象的例子是这样的
@Override
public boolean equals(Object object) {
boolean result = false;
if (object == null || object.getClass() != getClass()) {
result = false;
} else {
Tiger tiger = (Tiger) object;
if (this.color == tiger.getColor() //checking color and pattern same
&& this.stripePattern == tiger.getStripePattern()) {
result = true;
}
}
return result;
}