タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

お役立ちとjavaに関するkmiuraのブックマーク (3)

  • ジェネリクスの代入互換のカラクリ - プログラマーの脳みそ

    Javaジェネリクス再入門 - プログラマーの脳みそでは、「変数の型の宣言」の項で「ジェネリクスの<>の中は一般のJavaの型の代入互換性とは異なる。このことはよく覚えておかなくてはいけない。」と言ったものの、深入りはしなかった。 このあたりについて深入りしてみようじゃないか。 とりあえずサンプルコードはJavaで記述していくが、このあたりはジェネリクス指向の概念の部分だから、あまり言語に依ることはない。便宜的にJavaで書く、としておこう。 まず、型変数の境界について考えるために以下の継承関係のクラスを用意しておく。 public class A {} public class B extends A {} public class C extends B {} public class B2 extends A {} public class C2 extends B {} これは図で

    ジェネリクスの代入互換のカラクリ - プログラマーの脳みそ
  • Scalaのジェネリックスを学ぶ - かとじゅんの技術日誌

    Scalaのジェネリックスを少し学んでみました。(なんか違うんじゃね?とかあれば、ツッコミお願いしますm(_ _)m) Javaのジェネリックスでは、型パラメータは共変/反変ではない Javaでこんなコードを書いてコンパイラに怒られたことないですか。 public interface Animal { } public class Dog implements Animal{ } public class App { public static void main(String[] args) { ArrayList<Animal> animals = new ArrayList<Dog>(); } } ArrayList<Animal> animals = new ArrayList<Dog>(); とすると、型がミスマッチとなります。 つまり、ArrayListのサブ型として、Arra

    Scalaのジェネリックスを学ぶ - かとじゅんの技術日誌
  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクション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型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
    kmiura
    kmiura 2010/11/05
    明解。ワイルドカードのとこがちょっとわからんかったんであとでリンク先を読んでみる。
  • 1