Peut-être que je manque quelque chose, mais je pensais que si je déclare ma classe en tant que telle:Java Iterable <Iterable<T>> à ArrayList <ArrayList<T>>
public class Something<T> implements Iterable<Iterable<T>> {
public Something(Iterable<Iterable<T>> input) {
...
je devrais pouvoir instancier comme tel:
ArrayList<ArrayList<String>> l = new ArrayList<ArrayList<String>>();
Something<String> s = Something<String>(l);
Malheureusement ceci me gages une erreur. Je pensais que les ArrayLists sont Iterable, ce qui devrait correspondre exactement à la définition de mon constructeur.
Merci, mais maintenant je reçois des avertissements ici: 'public class Quelque chose implémente Iterable > { \t \t Iterable privée > entrée; \t \t Quelque chose publique (Iterable Étend Iterable > entrée) { \t \t this.input = (Iterable >) entrée; \t} ' –
Pass
Je suggère de trouver une copie de Java efficace par Josh Bloch et lire sur" PECS ". Cela vous aidera à comprendre vraiment ce qui se passe. Dans tous les cas, vous devez avoir Iterable extends Iterable 'partout où vous vous attendez à affecter' ArrayList > ' –
Jeremy
ou peut-être même' Iterable étend Iterable extends T>> ' – newacct