Java での instanceof 演算子の探索
instanceof 演算子は Java の型システムの不可欠な部分であり、実行時の型を決定できます。
instanceof を使用する場合、オブジェクト参照と型を比較します。構文は次のパターンに従います。
expression instanceof Type
比較の結果はブール値で、オブジェクトが指定された型のインスタンスであるかどうかを示します。たとえば、次のコードの場合:
if (source instanceof Button) { //... } else { //... }
source が Button クラスのインスタンスの場合、if ステートメントは true と評価され、ブロック内のコードが実行されます。ソースが Button ではない場合、代わりに else ステートメントが実行されます。
概念を理解するために、単純化されたクラス階層を考えてみましょう。
interface Domestic {} class Animal {} class Dog extends Animal implements Domestic {}
Dog オブジェクトを作成して比較すると、これは、instanceof:
Dog dog = new Dog(); System.out.println(dog instanceof Domestic); // true System.out.println(dog instanceof Animal); // true System.out.println(dog instanceof Dog); // true
を使用します。Dog は家畜と動物の両方のサブタイプであるため、この結果は理にかなっています。また、Dog クラス自体も拡張します。ただし、別のサブタイプと比較しようとすると、
System.out.println(dog instanceof Cat); // compilation error
Dog は Cat のサブタイプではないため、コンパイル エラーが発生します。
instanceof 演算子は特に便利です。ポリモーフィックな動作を扱うときにオブジェクトの実行時タイプを決定するために使用されます。共通の基本クラスから継承する複数の型があるシナリオを考えてみましょう:
class Shape {} class Circle extends Shape {} class Square extends Shape {}
Shape オブジェクトを引数として受け入れるメソッドでは、instanceof を使用して特定の型を区別できます:
public void drawShape(Shape shape) { if (shape instanceof Circle) { // Draw circle } else if (shape instanceof Square) { // Draw square } else { // Handle other shapes } }
instanceof を使用すると、実行時にさまざまなタイプのオブジェクトに応答でき、コードがより柔軟で適応性のあるものになります。
以上がJava の「instanceof」演算子は実行時にオブジェクトの型をどのように決定するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。