Java instanceofは

ケスティングの可能をチェックするキーワードです。

使い方は次の通りです。

 

参照変数 instanceof 該当タイプ

 

Java instanceofを使えばboolean形で変換してくれるのに

参照変数が該当タイプでケスティングが出来れば trueを、

参照変数が該当タイプでケスティングが出来なければ falseを

変換してくれます。

 

A<-B<-C のような相続構造があれば

<ーやじるしが示すところが上位クラスで、

class Aは親クラス class Bは Aを相続を受付、

class Cは相続を受けてる状況です。

 

 

class A {}

class B extends A {}

class C extends B {}

 

上の状況でinstanceofを使ったら

つぎの通りです。

 

B b = new B();

System.out.println(b instanceof A);//true

System.out.println(b instanceof B);//ture

System.out.println(b instanceof C);//false

 

多形的表現で Aタイプで宣言できることが

trueで見えます。

DownCastingをする時Compileには問題がありませんが、

実行する時問題が起きるかも知れません。

けれど、instanceofをつかえば相続関係、オブジェクト作成者などの

ケスティングの可能可否を確認するのができます。

 

A aabb = new B();

if(aabb instanceof B) {//true

B bb = (B)aabb;//실행

} 

A aa = new A();

 

このようにifを使ってinstanceofでケスティング関係を

確認したからケスティングが可能なときのみ実行するのができます。