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でケスティング関係を
確認したからケスティングが可能なときのみ実行するのができます。