Javaでの型の判定などに使われるinstance ofとgetClassについてメモしたいと思います。
Contents
instance of
A instance of Bの場合、下記のいずれかのときにtrueを返します。
- AがBのクラスのオブジェクト
- AがBのクラスのサブオブジェクト
- AがBのインターフェイスの実装クラス
- AがBのインターフェイスの実装クラスのサブクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
interface A{} class B implements A{} class C extends B{} class D{} public class Sample { public static void main(String[] args) { A obj1 = new B(); B obj2 = new C(); D obj3 = new D(); if( obj1 instanceof A ){ System.out.println("obj1"); } if( obj2 instanceof A ){ System.out.println("obj2"); } if( obj3 instanceof A ){ System.out.println("obj3"); } //obj1 //obj2 } } |
getClass
そのクラスの実行時のクラスを返します。
1 2 3 4 5 6 7 8 9 10 11 12 |
A obj1 = new B(); B obj2 = new C(); B obj3 = new B(); obj3 = obj2; System.out.println(obj1.getClass()); System.out.println(obj2.getClass()); System.out.println(obj3.getClass()); //class sample.B //class sample.C //class sample.C |
参考