オブジェクトじゃなくて、クラスオブジェクトでそのクラスの型を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)で比較できる。