• ベストアンサー

java.util.ArrayListクラスの継承

Java5年ぶりでちょっと新しい仕様について教えてください。。 java.util.ArrayListクラスを継承したクラスを作成しようと思っているのですが、継承後のクラスでも ArrayListChild<E> というような記述を有効にするには、一体どのような処理をすればよいのでしょうか。 そもそも、<E>とコンストラクタの後などに付けるこの仕様、なんて名前の仕様なんでしょうか。 よろしくお願いします。

  • ggaogg
  • お礼率86% (209/243)
  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • meenie
  • ベストアンサー率44% (40/90)
回答No.1

className<E>という仕様は、genericsType(総称型)と呼ばれています。 genericを利用したクラスの定義は以下の例をご覧ください。 public class ArrayListChild<E> extends ArrayList<Object> {   private E arg;   public E getArg(); // 定義省略   public void setArg(E arg); // 定義省略   public E doSomething(); // 定義省略 } 【注意点】 基底クラスのgeneric typeがObjectではない場合、 派生クラスのgeneric type指定の際に、注意が必要です。 (例) java.io.Writerとその派生クラスのみを許すArrayListを拡張する場合 public class ArrayListChild<T extends java.io.Writer> extends ArrayList<java.io.Writer> extends java.io.Writerを記述していなくてもコンパイルは通ります。 しかし、Writer派生クラスしか取れないはずなのに new ArrayListChild<String>() などが コンパイルエラーにならないという、あまりよろしくない状況になります。

関連するQ&A

  • ArrayListクラスについて

    java.util.ArrayListクラスは、 双方向に検索ができると本に書いてあったのですが、 どういう意味ですか? 具体例をまじえて教えて下さい。

    • ベストアンサー
    • Java
  • java.util.Propertiesクラス。

    servletで簡単な掲示板を作ろうとしているのですが、 java.util.Propertiesクラスの仕様を読んでもよくわかりません。どのように用いるのが適切なのでしょうか。

    • ベストアンサー
    • Java
  • ArrayListのパッケージがlistでない理由

    ・パッケージについて教えてください ■質問1 ・ArrayListのパッケージは、どうして「java.util.List」ではなくて「java.util.ArrayList」なのでしょうか? ・ArrayListは、Listインターフェイス実装クラスなのでListに紐付いている、と思ったのですが… ・「java/util/List.interface」と「java/util/ArrayList.class」は並列の位置づけになるのでしょうか? ・そういう決まりだから? ・Listインターフェイスのパッケージ名は下記で確認するのでしょうか? ・http://docs.oracle.com/javase/jp/7/api/java/util/List.html ■質問2 ・「import java.util.*;」表記ができるなら、全部これで良いようにも思うのですが、どういう風に使い分けるのでしょうか? ・普通はどちらを使う、とかあるのでしょうか?

    • ベストアンサー
    • Java
  • 親クラスのコンストラクタは? 引数付きコンストラクタは?

    VisualBasic.NETです。 あるクラスを継承したクラスからインスタンスを作成したときに、派生クラスのコンストラクタは呼び出されると思うのですが、基本クラスのコンストラクタはどうなるのでしょうか? JAVAのように、super() で呼び出す必要があるのでしょうか? 自動で呼び出されるのでしょうか? それとも、そもそも呼び出せないのでしょうか? また、引数の個数が違うコンストラクタは、同じクラス内に設定できるのでしょうか? JAVAのコードを移植しようと考えているのですが、出来るのかどうかが分からずに悩んでいます。 ご存じの方、よろしくお願いします。

  • ArrayList

    課題プログラムの中で、いくつかArrayListを使ったメソッドを作って動かすものが出題されているのですが、そのうち「ArrayListの文字を反転させて出力する」というのがわかりません。 何を使ったらよいでしょうか? ちなみに、私の書いたプログラムの中では、 ArrayList<String> list = new ArrayList<String>(); としていますので、それで書いて下さると嬉しいです。 また、課題の中で、listの中に入っているのは、String型のアルファベット10個です。 教えて下さい、よろしくお願いします。 ▼参考API http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/ArrayList.html

    • ベストアンサー
    • Java
  • COBOLの考え方からJavaへ

    今までIBMホスト畑で働いていたので、使用できる言語は COBOLやPL/Iだけでしたが、今後の仕事の展開も考え Javaを習得したいと思っています。 とりあえずJava言語の入門書を終えたので、 次は、以前新人のCOBOL研修用に作成した仕様書を Javaで書きかえてみようと思いたったのですが・・・ できませんでした。。。 COBOLは、MAINルーチンをプログラムの主とし 個々の機能(FILEのREAD処理など)をそれぞれの SUBルーチンで記述するといった構造的な作りになっています。 これをJavaにすると「FileのREAD処理」を1つのクラスとして考え、 「MAINルーチン的」な実行クラスから 「FileのREAD処理」クラスを呼ぶ(継承する)のか? オブジェクト指向とは、もっと別のことではないか? といったように、全然ちんぷんかんぷんな状況です。 みなさん、Javaでプログラムを記述するときは どういったアルゴリズムを考えながら記述しているのでしょうか? 是非ともご教授ください。 また、COBOLには、誰がソースをみてもわかりやすいように 記述するなどの暗黙的な決まり(ネストは3回程度など)があるのですが、 Javaにもあるのでしょうか?

    • ベストアンサー
    • Java
  • インタフェース、クラスの継承、コンストラクタ意味

    Javaを学習している初心者です。 インタフェース、コンストラクタ、クラスの継承について、 必要な理由が、イマイチよく分かりません。 特に設定しなくても、プログラムは動くと思うのですが・・・ (特にインタフェース) 詳しい方、教えて下さい。

    • ベストアンサー
    • Java
  • クラスの継承の仕方

    後学のため、JavaScriptについて勉強しています。 JavaScriptでもクラス(のようなもの)を定義してオブジェクトを作成できるようですが、サブクラスを定義する方法が分かりません。メソッドやコンストラクタはどのように継承すればよいのでしょうか。 お分かりの方おられましたら、ご教授のほどお願い致します。

  • ArrayListのバージョン変換

    今、JAVAを勉強しているのですが、環境の問題でJAVA1.4しか使えません。 しかし、市販の本を購入し、プログラムを書いて練習していたら、JAVA5.0のプログラムでした。 下記のプログラムを1.4のバージョンに変更するにはどうしたらいいのでしょうか?? ---プログラム--- import java.util.ArrayList; public class ItemCollection { //商品一覧を保持するArrayList protected ArrayList<Item> list; //商品一覧に対するGETTER,SETTER public ArrayList getList(){ return this.list; } public void setList(ArrayList<Item> list){ this.list = list; } //引数のないコンストラクタ public ItemCollection(){ } //商品一覧に商品を追加 public void addItem(Item item){ list.add(item); } //商品一覧に商品を参照 public Item getItem(int index){ return list.get(index); } //商品一覧の数を返す public int getSize(){ return list.size(); } }

    • ベストアンサー
    • Java
  • JSPからJavaクラスを参照できない?

    サーブレットを勉強しています。Eclipseを使っています。 WEB-INF/src/m/to_do.java view/list.jsp というファイルがあるのですが、list.jspの中でto_doクラスを使いたいので、 <%@ page import="java.util.ArrayList" %> <%@ page import="m.to_do" %> <jsp:useBean id="list"scope="application"type="java.util.ArrayList<to_do>" /> と記述したのですが、java.util.ArrayList<to_do>のところで、 未定義型:to_do と出て、エラーが出てしまいます。 このJSPの中で、 to_do.getID(); など、to_doクラスのメソッドを呼び出す記述を書いても、やはりto_doを認識していないようです。 どうすれば、to_doクラスを読み込ませられるのでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう