あなたは書く必要があります
boolean sameName(MovieCard movieCard) {
if (this.equals(movieCard)){
return true;
} else{
return false;
}
}
クラスthis.MovieCard
内の変数を指しているためです。Moviecard
あなたの構文エラーに加えて、あなたのequals実装はデフォルトの実装以外には何もしません
要確認 これは、 と が同じ参照を 指しているif (this.equals(movieCard)){
場合にのみ当てはまります。movieCard
this
なぜなら、
java.lang.Objectequals()
によって提供されるクラスのデフォルトの実装は、メモリ位置を比較し、2 つの参照変数が同じメモリ位置を指している場合、つまり本質的に同じオブジェクトである場合にのみ真になります。return
MovieCard
フィールドの比較MovieCard's
が同じかどうかなど、クラスの equals メソッドをオーバーライドする必要があると思います。
読むことを好む、本質的Ovveride
に等しい方法。
間違った方向に進んでいます。上記のリンクの例を参照してequals
から、MovieCard のすべてのフィールドが渡されたオブジェクトのフィールドに一致するように equals を実装してください。それはあなたが求めた実装です。
一般に、次のように 2 つの 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;
}