Java SE 8 Silverの勉強中なのですが、
下記のコードを実行してなぜfalseが返されるのかがわかりません。
Objectクラスのequalsメソッドをオーバーライドして、同値性の判定をしているつもりです。
元々の設問では、if文がなくて、instanceofで判定していないのにダウンキャストして
ClassCastExceptionが発生するというものでした。
if文を付け加えて例外はスローされなくなりましたが、falseになる理由がどうしてもわからないので
解説をして頂きたいです。宜しくお願い致します。
class A{
private int num;
public A(int num){
this.num=num;
}
public boolean equals(Object obj){
if(obj instanceof A){
A a=(A) obj;
return this.num==a.num;
}
return false;
}
}
class B{
private int num;
public B(int num){
this.num=num;
}
public boolean equals(Object obj){
if(obj instanceof B){
B b=(B) obj;
return this.num==b.num;
}
return false;
}
}
public class Main {
public static void main(String[] args) {
A a=new A(10);
B b=new B(10);
System.out.println(a.equals(b));
}
}
回答2件
あなたの回答
tips
プレビュー