web-dev-qa-db-ja.com

ジェネリックList <T>の使用と宣言

だから私はJavaで作業していて、汎用リストを宣言したい。

だから私がこれまでやっているのはList<T> list = new ArrayList<T>();

しかし、今は要素を追加したいと思います。それ、どうやったら出来るの?ジェネリック要素はどのように見えますか?

List.add( "x")のようなことを試して、文字列を追加できるかどうかを確認しましたが、機能しません。

List<String>を宣言していない理由は、このリストをList<T>のみを引数としてとる別の関数に渡す必要があるためです。

14
user1855952

以下のようなジェネリッククラスまたはジェネリックメソッドが必要です。

public class Test<T>  {
    List<T> list = new ArrayList<T>();
    public Test(){

    }
    public void populate(T t){
        list.add(t);
    }
    public static  void main(String[] args) {
        new Test<String>().populate("abc");
    }
}
21
PermGenError

Tは、リストに含まれるオブジェクトのタイプです。 List<String>を記述し、List<T>を必要とする関数で使用することができます。Tは何でもよいと言うのに使用されるため、問題にはなりません。

0
Cedias

タイプが直接のリストに「X」(文字列)を追加することはできません。そのため、Tをパラメーターとして受け入れ、リストに追加する関数を作成する必要があります。

List<T> myList = new ArrayList<T>(0);
public void addValue(T t){
  myList.add(t);
}

この関数を呼び出している間、文字列を渡すことができます。

 object.addValue("X");
0
Amol Fasale