J'essaie de faire quelque chose comme ça: -
public static ArrayList<myObject>[] a = new ArrayList<myObject>[2];
myObject est une classe. Je reçois cette erreur: - Création d'un tableau générique (la flèche pointe vers nouveau.)
Vous ne pouvez pas avoir de tableaux de classes génériques. Java ne le supporte tout simplement pas.
Vous devriez envisager d'utiliser une collection au lieu d'un tableau. Par exemple,
public static ArrayList<List<MyObject>> a = new ArrayList<List<MyObject>();
Une autre "solution de contournement" consiste à créer une classe auxiliaire comme celle-ci.
class MyObjectArrayList extends ArrayList<MyObject> { }
puis créez un tableau de MyObjectArrayList
.
Voici un bon article expliquant pourquoi cela n'est pas autorisé dans la langue. L'article donne l'exemple suivant de ce qui pourrait arriver s'il était autorisé:
List<String>[] lsa = new List<String>[10]; // illegal
Object[] oa = lsa; // OK because List<String> is a subtype of Object
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
oa[0] = li;
String s = lsa[0].get(0);
Il existe un moyen plus simple de créer des tableaux génériques que d'utiliser List.
Tout d'abord, laissez
public static ArrayList<myObject>[] a = new ArrayList[2];
Ensuite, initialisez
for(int i = 0; i < a.length; i++) {
a[i] = new ArrayList<myObject>();
}
Tu peux faire
public static ArrayList<myObject>[] a = (ArrayList<myObject>[])new ArrayList<?>[2];
ou
public static ArrayList<myObject>[] a = (ArrayList<myObject>[])new ArrayList[2];
(Le premier est probablement meilleur.) Les deux provoqueront des avertissements non vérifiés, que vous pouvez à peu près ignorer ou supprimer en utilisant: @SuppressWarnings ("non vérifiée")