メソッドの戻り値のジェネリクス(List<String>のString部分)を動的に変えてみましょう。 メリット どういうメリットがあるかというと、 共変戻り値を使っていて、メソッドの戻り値の型が一つに定まらないとき 親子関係にあるいろいろな型のオブジェクトが1つのリストに入っていて、そのうち特定の型のオブジェクトだけを抽出して新たなリストを作成して返したいとき(たとえばAndroidアプリの開発で、引数にButton.classやらTextView.classを渡して、それぞれList<Button>やList<TextView>が返ってくるメソッドを作りたいとき) に役立ちます。 この方法を使えば、 戻り値のジェネリクスが違うだけのメソッドをたくさん作らないですんだり、 返ってきたList<Foo>の要素1つ1つに対して型をチェックしたりキャストしたりする手間がなくなります。 それほど
メソッドの総称型 メソッドのみに総称型を適用した定義を行うことも出来る。[2007-06-12] 戻り値の型の直前に「<仮型引数, 仮型引数…>」を置くだけ。後はクラスの場合と同様。 public static <T> T notNull(T arg1, T arg2) { T ret; if (arg1 != null) { ret = arg1; } else { ret = arg2; } return ret; } このメソッドを呼び出す側は、クラスの場合とは異なり、明示的に型引数を指定する必要は無い。 指定した引数の値に応じて、自動的に型が判断される。 String s = notNull("abc", "def"); //型引数はString Long l = notNull(new Long(1), new Long(2)); //型引数はLong int i = notNu
ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く