Questionというクラスがあり、そこでequalsメソッドをオーバーライドしたいとしましょう。私は、これらのオブジェクトのうちの2つが属性 'number'が両方とも同じ場合、同じオブジェクトになるようにしたいと思います。Java:メソッドのオーバーライドと型キャスト
ここで、 'o'がQuestionのインスタンスである場合、if条件で既にチェックした場合、型キャストを "(Question)o"にしなければならないのはなぜですか?
public boolean equals(Object o) {
if(o instanceof Question) {
return ((Question) o).number == number;
}
return false;
}
Javaは十分にスマートではありません。例えば、スウィフトはこれを行うことができると信じています。 –
ええ、このような推論はそれほど簡単ではないと言及していません。 'o'はfinalではないので、その値はifブロック内の別のインスタンスに変更することができます。例えば、 – Mifeet
A、B、C 3クラス、BとCはAを拡張し、Bはcolorという名前の変数、 Cは変数名エンジンを持っていますが、instanceOfは(B instanceOf A、C instanceOf A)に対してtrueを返しますが、使用する変数がBでないことを確認するためにキャストする必要があります。キャストではありません。私が働いているインスタンスはBではないC –