Javaでのinstanceofの使い方はどうですか?
Javaでは、instanceof演算子を使用して、オブジェクトが特定のクラスのインスタンスまたはそのサブクラスのインスタンスであるかどうかをチェックすることができます。instanceofの構文は以下の通りです。
obj instanceof ClassName
その中で、objはチェックする対象であり、ClassNameはチェックするクラス名です。
「instanceof」演算子は、objがClassNameクラスのインスタンスまたはそのサブクラスのインスタンスであればtrueを返し、そうでなければfalseを返すブール値を返します。
以下はサンプルコードです。
public class Animal {
// ...
}
public class Dog extends Animal {
// ...
}
public class Cat extends Animal {
// ...
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
Dog dog = new Dog();
Cat cat = new Cat();
System.out.println(animal instanceof Animal); // true
System.out.println(dog instanceof Animal); // true
System.out.println(cat instanceof Animal); // true
System.out.println(dog instanceof Dog); // true
System.out.println(cat instanceof Dog); // false
System.out.println(animal instanceof Dog); // false
System.out.println(animal instanceof Cat); // false
}
}
上記の例では、animal、dog、catはすべてAnimalクラスのインスタンスですので、animal instanceof Animal、dog instanceof Animal、cat instanceof Animalの結果はすべてtrueです。
犬はDogクラスのインスタンスであり、したがって犬 instanceof Dogの結果はtrueであり、猫はDogクラスのインスタンスではないので、猫 instanceof Dogの結果はfalseです。
同様に、animalはDogクラスのインスタンスではないため、animal instanceof Dogの結果はfalseであり、animalはCatクラスのインスタンスでもないため、animal instanceof Catの結果もfalseです。