Java instanceof演算子のサンプル

Javaのinstanceof演算子のサンプルです。

instanceof演算子

1  変数  instanceof  クラス名
2  変数  instanceof  インターフェース名

以下の時、trueを返します 。

  • 変数が参照しているインスタンスは、クラス名のインスタンスである。
  • 変数が参照しているインスタンスは、クラス名のサブクラスのインスタンスである。
  • 変数が参照しているインスタンスは、インターフェース名の実装クラスのインスタンスである。
  • 変数が参照しているインスタンスは、インターフェース名の実装クラスのサブクラスのインスタンスである。

右辺がクラスの場合

instanceof演算子の右辺がクラスの場合のサンプルです。
6行目のTestAは親クラスです。
9行目のTestBは6行目のTestAクラスを継承する子クラスです。
18,22,29,33行目はinstanceof演算子で判定をしています。
36行目は左辺がnullの場合です。falseになります。

package test1;
/**
 * instanceof演算子
 */
// 親クラス
class TestA {
}
// 子クラス (TestAクラスを継承)
class TestB extends TestA {
}
public class Test1 {
	public static void main(String[] args) {
		
		TestA ta = new TestA();
		
		// 変数taが参照しているインスタンスは、
		// TestAクラスのインスタンスか
		System.out.println(ta instanceof TestA); //trueが出力される
	
		// 変数taが参照しているインスタンスは、
		// TestBクラスのインスタンスorTestBクラスサブクラスのインスタンスか
		System.out.println(ta instanceof TestB); //falseが出力される

		
		TestB tb = new TestB();
		
		// 変数tbが参照しているインスタンスは、
		// TestAクラスのインスタンスorTestAクラスのサブクラスのインスタンスか
		System.out.println(tb instanceof TestA); //trueが出力される
		
		// 変数tbが参照しているインスタンスは、
		// TestBクラスのインスタンスであるか
		System.out.println(tb instanceof TestB); //trueが出力される
		
		// 左辺がnullの場合は、falseになる
		System.out.println(null instanceof TestB); //falseが出力される
	}
}

右辺がインタフェースの場合

instanceof演算子の右辺がインタフェースの場合のサンプルです。
8行目のTestAは親クラスです。5行目のインターフェースを実装しています。
11行目のTestBは8行目のTestAクラスを継承する子クラスです。
20,26行目はinstanceof演算子で判定をしています。

package test1;
/**
 * instanceof演算子
 */
interface InterfaceA {
}
// 親クラス (TestAクラスは、インターフェースを実装している)
class TestA implements InterfaceA {
}
// 子クラス (TestAクラスを継承している)
class TestB extends TestA {
}
public class Test1 {
	public static void main(String[] args) {
		
		TestA ta = new TestA();
		
		// 変数taが参照しているインスタンスは、 
		// InterfaceAの実装クラスのインスタンスであるか
		System.out.println(ta instanceof InterfaceA); //trueが出力される
		
		TestB tb = new TestB();
		
		// 変数tbが参照しているインスタンスは
		// InterfaceAの実装クラスのインスタンスorInterfaceAの実装クラスのサブクラスのインスタンスか
		System.out.println(tb instanceof InterfaceA); //trueが出力される
	}
}

以下はOracleのThe Java Tutorialsのリンクです。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java メンバー変数とローカル変数
Java クラス型の型変換とキャストのサンプル
Java thisのサンプル
Java インターフェースのサンプル
Java abstract修飾子のサンプル
Java シングルトンのサンプル
Java ポリモフィズムのサンプル
Java staticメソッドとstatic変数のサンプル




△上に戻る