あなたが等号をオーバーライドするスーパークラスを試してみました...そして自動車は、サブクラスのオーバーライド実装を生成...
。それは、現在の自動でsuper.equals()への呼び出し
を持つことになり、それが唯一の...
は、シナリオの下に考えてみましょう、あなたは、なぜ警告を理解し、子クラスの値をチェックしているの実装を生成しました。
abstract Class A{
private int a;
public void setA(int a){
this.a=a;
}
}
Class B extends A{
private int x;
public void setX(int x){
this.x=x;
}
@Override
public boolean equals(Object obj) { // This does not call Super.equals
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
B other = (B) obj;
if (x != other.x)
return false;
return true;
}
}
、メインメソッドで
B b1= new B();
b1.setA(10);
b1.setX(20);
B b2= new B();
b2.setA(20);
b2.setX(20);
if(b1.equals(b2)){
System.out.println("Warning was Right");
}
良い概観してみてください:http://www.artima.com/lejava/articles/equality.html –