2017-08-18 13 views
0

私はこのumlダイアグラムを持っており、私は私の友人から持っているコードの一部を理解していません。私は "equals"メソッドを理解していません。何のために使用され、なぜそれを使用する必要がありますか?
これはUMLです: enter image description hereumlダイアグラムのメソッド

しかし、私はコードの一部を理解していません。

このこれまでのコードの一部である:

class Artist { 

private String name; 

Artist(String name) { // constructor 
    this.name = name; 
} 

public String getName() { // name getter 
    return name; 
} 

public String toString() { // toString 
    return name; 
} 
} 

class CD { 
private String title; 
private Artist name; 

CD(String title) { 
    this.title = title; 
} 

CD(String title, Artist name) { 
    this.title = title; 
    this.name = name; 
} 

public Artist getArtist() { 
    return name; 
} 

public String getTitle() { 
    return title; 
} 

public String toString() { 
    return title + " by " + getArtist(); 
} 

@Override 
public boolean equals(Object obj) { 
    if (this == obj) 
     return true; 
    if (obj == null) 
     return false; 
    if (getClass() != obj.getClass()) 
     return false; 
    CD other = (CD) obj; 
    if (name == null) { 
     if (other.name != null) 
      return false; 
    } else if (!name.equals(other.name)) 
     return false; 
    if (title == null) { 
     if (other.title != null) 
      return false; 
    } else if (!title.equals(other.title)) 
     return false; 
    return true; 
} 

}

+2

[この記事の回答](https://stackoverflow.com/questions/15175109/why-do-we-have-to-override-the-equals-method-in-java)をお読みください。 –

+1

Javaでequals()メソッドをオーバーライドする必要があるのはなぜですか?](https://stackoverflow.com/questions/15175109/why-do-we-have-to-override-the-equals-method -in-java) –

答えて

1

クラス図は、CDがequals方法を提供し、一般的なオブジェクトから継承することを外します。正しくは

enter image description here

のようになります(私のJavaの知識がnullに近いです。)

1

は、メソッドは、2つの数を比較するような数値comparison.Inの素人の用語にそれを実行するためのラッパークラスです等しいです。例x = 10、y = 20はx = yですか?答えはいいえ。同じjavaの場合、x = y elseがfalseを返した場合にtrueを返すequalsメソッドがあります。 あなたの場合、コード内で比較をカスタマイズするために、メソッドequalsをオーバーライドしています。彼は2つのCDオブジェクトを比較しています。等しい場合はtrue、そうでない場合はfalseを返します。

関連する問題