タグ

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

タグの絞り込みを解除

ジェネリクスに関するura_raのブックマーク (3)

  • ジェネリクスと配列 - プログラマーの脳みそ

    Javaのジェネリクスは一般に配列と混ぜてはいけないとされるが、混ぜて用いた場合に何が問題となるのか。 歴史的な問題 Javaが1995年に登場した当時、Javaに配列はあったがジェネリクスはなかった。 ジェネリクスを含む型システムの理論的な整備は、1990年代から2000年代にかけてのJavaのバージョンアップの時期に並行して行われていた。これは1995年当初のJavaになぜより良いジェネリクスを搭載した形でリリースされなかったのか?ということにひとつの答えを示すだろう。つまり、1995年当時にはジェネリクス(Java5に搭載されたような変性を含むもの)は未来の技術であって、まだ理論的に固まっていないものであった、というわけだ。 Java言語仕様にも記述されているが Historically, wildcards are a direct descendant of the work b

    ジェネリクスと配列 - プログラマーの脳みそ
  • 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ジェネリクス再入門 - プログラマーの脳みそ
  • Javaのジェネリクスでハマった件について - 電脳徒然日記

    抽象基底クラスにcompareToメソッドの実装を持たせた以下のような クラス定義を行った場合にHogeListHolderがコンパイルエラーとなります。 原因はHogeクラスはComparableEntityの継承クラスではなく ComparableHogeの継承クラスと判断されるからです。 ・HogeListHolderがコンパイルエラーになったケース public interface ComparableEntity<T> extends Comparable<T> /* compareToメソッドの実装を持つ */ public abstract class ComparableHoge implements ComparableEntity<ComparableHoge> public class Hoge extends ComparableHoge /* compareToメ

    Javaのジェネリクスでハマった件について - 電脳徒然日記
  • 1