Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
Java instanceof演算子:包括的ガイド
Javaのinstanceof演算子の仕組みを、基本的な使用法、継承、インターフェースをカバーする明確な例で解説します。
Javaにおいて、instanceof演算子は、オブジェクトが特定のクラスやインターフェースに属するかどうかを検証します。オブジェクトの実行時型が指定された型と一致すればtrue、そうでなければfalseを返します。
objectName instanceof className;
以下は、Stringとユーザー定義クラスで演算子を示すシンプルな例です。
例:基本的なinstanceofの使用
class Main { public static void main(String[] args) { String name = "Programiz"; boolean result1 = name instanceof String; System.out.println("name is an instance of String: " + result1); Main obj = new Main(); boolean result2 = obj instanceof Main; System.out.println("obj is an instance of Main: " + result2); } }
出力
name is an instance of String: true obj is an instance of Main: true
両方のチェックがtrueを返すのは、nameが確かにStringであり、objがMainインスタンスだからです。
注意: Javaでは、Stringはプリミティブではなく参照型です。
継承でのinstanceofの使用
この演算子は、多態的な階層構造を扱う際に不可欠です。サブクラスのインスタンスがスーパークラスの型も満たすことを確認できます。
// スーパークラス class Animal {} // サブクラス class Dog extends Animal {} class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println(d1 instanceof Dog); // true System.out.println(d1 instanceof Animal); // true } }
示されているように、d1はDogであり、かつAnimalでもあると認識され、Javaの継承モデルを反映しています。
インターフェースでのinstanceofの使用
instanceofは、オブジェクトが特定のインターフェースを実装しているかどうかもチェックします。
interface Animal { } class Dog implements Animal { } class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println(d1 instanceof Animal); // true } }
ここでは、d1はAnimalを実装するDogなので、演算子はtrueを返します。
注意: すべてのJavaクラスは最終的にjava.lang.Objectを継承します。したがって、あらゆるオブジェクトはObjectのインスタンスでもあります。例えば:
d1 instanceof Object
これは常にtrueと評価されます。
Java
- Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
- Java継承のマスター:概念、種類、実践例
- Java Staticネストクラスの理解:用法、違い、実例
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaシングルトンパターン完全解説:安全な実装と活用法
- Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
- Java ArrayList完全マスター:操作・メソッド・ベストプラクティス
- Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
- Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
- Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除
- Java 9で匿名内部クラスにダイヤモンド演算子対応:コード簡素化