S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

クラスの型を比較する

オブジェクトじゃなくて、クラスオブジェクトでそのクラスの型をincetanceofで聞くみたいなの。

try {
    ByteArrayOutputStream.class.asSubclass(OutputStream.class);    // (1)
} catch (ClassCastException e) {
  // 通りません
}
try {
    ByteArrayInputStream.class.asSubclass(OutputStream.class);     // (2)
} catch (ClassCastException e) {
  // 通ります
}

(1)はOKだけど、(2)はClassCastExceptionになる。
もっとスマートな方法ねんかな?


追記 2009/02/04
id:hhelibexさんのコメントより、OutputStream.class.isAssignableFrom(ByteArrayOutputStream.class)で比較できる。