2013-01-01から1年間の記事一覧

あなたの知らない、メソッドに型変数を加えるべき理由〜引数型の実型引数を制限〜

先のエントリは引数の型を制限する話でしたが、今回は引数がパラメータ化された型の場合、その実型引数を制限するのに型変数が使えるという話です。3つのケースを紹介します。 複数の実型引数間の関係を制限 たとえば、A×B (AとBの直積型)を表すクラスPairが…

あなたの知らない、メソッドに型変数を加えるべき理由〜引数を再帰的型に制限〜

ジェネリックな設計 基礎編 - プログラマーの脳みそに、メソッドをジェネリックにするべき分かりやすい条件があり、感銘を受けました。 ジェネリックメソッドでの型変数というのはこのようなメソッドに対してInとOutのデータの型の関連性を表現します。 複数…

ジェネリックな未加工型って何?

詳細なコーディング規約として愛用している、Javaセキュアコーディングスタンダードの訳がおかしいのでメモ。 OBJ03-J. ジェネリックな未加工型とジェネリックでない未加工型を新規コードに混在させない http://www.jpcert.or.jp/java-rules/obj03-j.html ジ…

型変数の上限境界が含意するワイルドカードの上限境界は不要

概要 C とC は同じ。(Cの場合) D とD は同じ。(Dの場合) D とD は同じ。(Dの場合) ただし、3つめはEclipseコンパイラではダメだった。 確認コード 代入変換で確認。 C<A>とC<B>はAとBが等しくないと互いに代入できないはず。 package test; import java.io.Seriali</b></a>…