16
since 2002.1.6

あなたの猫さんも,カウンタに参加しませんか?

猫タワーをチェック  過去の猫タワーをチェック

2008/7/21
2008/5/4
2003/7/21
2004/3/21
2007/12/31
2008/3/18
2008/3/10
2007/12/30
 
PR: 転職    葬式    マンスリーマンション 神戸    北海道    環境    FX    不動産担保融資    桐ヶ谷斎場    海外旅行    専門学校   

marsさんとこにあった「Genericsの奥深さをちょっと覗いてみたよ」が、おもしろい。

Generic methodの型パラメータを、throws節にバインドできるとは知らなかった。肝は、

    static void rethrowAny(Throwable t) {
        RethrowDemo.<RuntimeException>rethrowInternal(t);
    }

    @SuppressWarnings("unchecked")
    static <T extends Throwable>: void rethrowInternal(Throwable t) throws T {
        throw (T) t;
    }

かな。チェック例外への対処はコンパイル時に行われるから、Genericsを使って「これはRuntimeExceptionだからね〜」とだまして、InterruptedExceptionを渡す。throw (T) t;のキャストは、所詮はイレージャだから、コンパイル時のチェックのみで、実行時には消えてなくなってしまい、別にcheckcastされるわけではない。かくして、throws節無しで、チェック例外がスローできてしまうわけだ。




コメント追加

タイトル
本文
HTML : b, i, blockquote, br, p, pre, a href="", ul, ol, li
名前
E-mail
Webサイト
保存しますか? はい  いいえ 

E-mailは公開されません, このエントリーの新規コメント通知が必要なら記入します。(解除可能)