0

リストのタイプが実行時にのみ知られている一般的なリストを生成したい(そのリストを作成するオブジェクトのタイプ)。

完全な説明:

この機能を抽象クラスに実装したいので、実行前に親クラスを知っています。

それを行う方法がわかりません。

    Class myClass = getClass().getSuperclass();
    LinkedList<myClass> list = new LinkedList<myClass>();

動作しません。何か案は?

4

4 に答える 4

5

または、次のように書くこともできます。

    List<Object> list = new LinkedList<Object>();
于 2012-10-12T16:17:47.840 に答える
3

ジェネリックは主にコンパイル時の機能であるため、このコンテキストでは意味がありません。

あなたはただ書くことができます

List list = new LinkedList();

あなたがそれを使うことができるなら、私は通常ArrayListを好みます。;)

于 2012-10-12T16:15:25.240 に答える
0

単純にNon-Generics ArrayListを使用する

ArrayList arrList = new ArrayList();

を使用することもできます<?>

の原理を示しているので、を使用してList考えるとよいでしょう。"Program in Interface rather than implementation"

于 2012-10-12T16:21:36.890 に答える
0

別のオプションは、抽象クラスを拡張クラスの型でパラメーター化することです。これは少し過剰に設計されていますが、動作するはずです:

package test;

import java.util.ArrayList;
import java.util.List;

public class  AbstractListHolder<T> {

    private List<T> list = new ArrayList<T>();

    List<T> getList() {
        return list;
    }

}

class ListHolder extends AbstractListHolder<ListHolder> {

    void doSomething() {
        getList().add(this);        
    }

}
于 2012-10-12T16:40:46.183 に答える