Java インスタンスの型を調べるサンプル(instanceof)

Javaのインスタンスの型を調べるサンプルです。
instanceof演算子を使用します。

目次

instanceof演算子

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

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

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

変数がnullの時は、falseを返します。

instanceof演算子の右辺がクラスの場合

instanceof演算子の右辺がクラスの場合のサンプルです。

6行目のクラスは3行目のクラスを継承しています。
12行目は、親クラスのインスタンスを生成しています。
14行目、変数taが参照しているインスタンスは、TestAクラスのインスタンスか→true
16行目、変数taが参照しているインスタンスは、TestBクラスのインスタンス or TestBクラスのサブクラスのインスタンスか→false

package test1;

class TestA {
}

class TestB extends TestA {
}

public class Test1 {
	public static void main(String[] args) {
		
		TestA ta = new TestA();
		
		System.out.println(ta instanceof TestA); //true
	
		System.out.println(ta instanceof TestB); //false
	}
}

 

以下のコードは、上記と同じく6行目のクラスは3行目のクラスを継承していますが、
今度は、12行目で、子クラスのインスタンスを生成しています。

14行目、変数tbが参照しているインスタンスは、TestAクラスのインスタンス or TestAクラスのサブクラスのインスタンスか→true
16行目、変数tbが参照しているインスタンスは、TestBクラスのインスタンスであるか→true
18行目、左辺がnullの場合は、falseになります。

package test1;

class TestA {
}

class TestB extends TestA {
}

public class Test1 {
	public static void main(String[] args) {
		
		TestB tb = new TestB();
		
		System.out.println(tb instanceof TestA); //true
		
		System.out.println(tb instanceof TestB); //true
		
		System.out.println(null instanceof TestB); //false
	}
}

instanceof演算子の右辺がインタフェースの場合

instanceof演算子の右辺がインタフェースの場合のサンプルです。

6行目のクラスは、3行目のインターフェースを実装しています。
14行目、変数taが参照しているインスタンスは、InterfaceAの実装クラスのインスタンスであるか→true

package test1;

interface InterfaceA {
}

class TestA implements InterfaceA {
}

public class Test1 {
	public static void main(String[] args) {
		
		TestA ta = new TestA();
		
		System.out.println(ta instanceof InterfaceA); //true
	}
}

 

以下のコードは、上記と同じく6行目のクラスは3行目のインターフェースを実装していますが、
今度は、9行目で6行目のクラスを継承し、15行目で子クラスのインスタンスを生成しています。

17行目、変数tbが参照しているインスタンスはInterfaceAの実装クラスのインスタンス or InterfaceAの実装クラスのサブクラスのインスタンスか→true

package test1;

interface InterfaceA {
}

class TestA implements InterfaceA {
}

class TestB extends TestA {
}

public class Test1 {
	public static void main(String[] args) {
		
		TestB tb = new TestB();

		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変数のサンプル

△上に戻る