だれの子孫か?

オブジェクト hoge が、クラス Tako の子孫の クラスの オブジェクトである場合true を返す。


bool isChild = (new Tako()).getClass().isInstance((Object)hoge);

hoge.getSuperclass()を使うと、その第一親等の祖先との比較しかできないが、
これだと、Ko extends Titi extends Zizi extends Hizizi
とか言う場合にKo のオブジェクト hoge が Hizizi にキャストできるかどうかがわかる。

ClassCastException を呼ばない、呼ぶでわけた方が早いか?


Image image;
try{
//Applet 族だと、getCodeBase()でimage を取ってこれる。
Applet applet = (Applet) hoge;
image = applet.getImage(applet.getCodeBase(), filename);
}catch(ClassCastException e){
//そうでなければToolkitから。
Toolkit toolkit = Toolkit.getDefaultToolkit();
image = toolkit.getImage(filename);
}