演算子 を使用すると
instanceof
、オブジェクトがどのクラスから来たかを調べることができます。この演算子には 2 つの引数があります。左側はオブジェクトへの参照、右側はオブジェクトの互換性がチェックされる型の名前です。例えば:
Parent р = new Child(); // проверяем переменную р типа Parent
//на совместимость с типом Child print(p instanceof Child);
結果はtrueになります。したがって、演算子はinstanceof
参照の型には依存せず、参照先のオブジェクトのプロパティに依存します。ただし、この演算子は、オブジェクトの派生元の型に対してのみ true 値を返すわけではありません。すでに宣言されているクラスにもう 1 つ追加しましょう。
// Объявляем новый класс и наследуем
// его от класса Child
class ChildOfChild extends Child {}
次に、新しい型の変数を作成しましょう。
Parent p = new ChildOfChild();
print(p instanceof Child);
最初の行では、 型の変数を宣言しますParent
。この変数は、 から派生したオブジェクトへの参照で初期化されますChildOfChild
。2 行目のステートメントは、instanceof
型参照Parent
と classの互換性を分析しますChild
が、関連するオブジェクトは最初のクラスからも 2 番目のクラスからも派生していません。ただし、このオブジェクトの派生元のクラスは を継承するため、演算子はtrueChild
を返します。 オリジナルソースへのリンク:オペレーターinstanceof
GO TO FULL VERSION