クラスが別のクラスをオーバーライドするかどうかを確認するにはどうすればよいですか?
例:Saybob
はBot
、抽象クラスをオーバーライドするクラスUnit
でした。次のことを真と評価するにはどうすればよいですか?
bob.getClass() == Unit.class
instanceof
次の演算子を使用します。
if(bob instanceof Unit) {
// ...
}
を使用してオブジェクトがクラスのインスタンスであるinstanceof
ことを確認したら、次のようにそのクラスに安全にキャストできます。
if(bob instanceof Unit) {
Unit bobUnit = (Unit) bob;
bobUnit.unitMethod();
}
Unit
これは、サブクラス (例: ) だけが定義されている関数を呼び出すときに必要になる場合があります。
実装が
Bob implements Unit
それから
bob.getClass().getSuperclass()
ユニットを返します