例外とか投げて貰ってもねぇ…

java.lang.Class#cast

    public T cast(Object obj) {
	if (obj != null && !isInstance(obj))
	    throw new ClassCastException();
	return (T) obj;
    }

こんなん書いてみた。

public static <T> T as(Class<T> clazz, Object obj) {
    if (obj != null && clazz.isInstance(obj)) {
        return (T) obj;
    }
    return null;
}

isInstanceに、null渡しちゃダメなんだろうか。
nativeメソッドになっているから、実装がどうなってるかわからんのだけども。
windows版のバイナリだとnull渡しても特に問題無くfalseが返ってきたりしてる。


追記。

The method returns true if the specified Object argument is non-null and can be cast to the reference type represented by this Class object without raising a ClassCastException. It returns false otherwise. 

と書いてあるので、null渡してもイイぞ、ゴルァ。と突っ込みが入りました。
確かに、これならnull渡してもいい感じ。
で、Class#castでnullチェックしてるのは、nativeメソッドの呼出しを避けられるケースを作る事でパフォーマンスの劣化を防いでいるのでは?との事。