そのためにはequals()
、クラスのメソッドをオーバーライドする必要があります。メソッドをオーバーライドA
しない場合Object
、参照変数が同じオブジェクトを参照しているかどうかをチェックするクラス equals メソッドが使用されます。
Integer
クラスでは、メソッドequals()
はすでにオーバーライドされており、値をチェックします。
また、オーバーライドするたびにequals()
、オーバーライドhashcode()
も
public class A {
private int number;
A(int number){
this.number = number;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + number;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
A other = (A) obj;
if (number != other.number)
return false;
return true;
}
public static void main(String[] args) {
A a1 = new A(5);
A a2 = new A(5);
System.out.println(a1.equals(a2));
}
}
これは出力されtrue
ます。
なんで?誰でも説明できますか?
Integer
クラスでは、メソッドequals()
はすでにオーバーライドされており、値をチェックします。
整数#等しい()
equals メソッドの重要性を理解するのに役立つ優れたチュートリアルがJavaGeekで提供されています。