web-dev-qa-db-fra.com

Utiliser et déclarer une liste générique <T>

Je travaille donc en Java et je souhaite déclarer une liste générique.

Donc, ce que je fais jusqu'à présent, c'est List<T> list = new ArrayList<T>();

Mais maintenant, je veux ajouter un élément. Comment je fais ça? À quoi ressemble un élément générique?

J'ai essayé de faire quelque chose comme List.add ("x") pour voir si je pouvais ajouter une chaîne mais cela ne fonctionnait pas. 

(La raison pour laquelle je ne déclare pas un List<String> est que je dois passer cette liste à une autre fonction qui prend uniquement List<T> en tant qu'argument. 

14
user1855952

Vous devriez soit avoir une classe générique ou une méthode générique comme ci-dessous:

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");
    }
}
20
PermGenError

Le T est le type des objets que votre liste contiendra . Vous pouvez écrire List<String> et l'utiliser dans une fonction nécessitant List<T>, cela ne devrait pas poser de problème, car le T est utilisé pour dire que ça peut être n'importe quoi. .

0
Cedias

Vous ne pouvez pas ajouter le "X" (Chaîne) dans la liste ayant le type de directement afin que vous deviez écrire une fonction qui accepte T comme paramètre et l'ajouter à la liste, comme

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

et tout en appelant cette fonction, vous pouvez passer une chaîne.

 object.addValue("X");
0
Amol