J’ai un petit soucis que je n’arrive pas à comprendre.
Je pense que ça vient d’une incompréhension de la généricité en Java, mais ce que je fais me semble plutôt logique… mais ne doit pas l’être.
J’ai tout d’abord une classe générique qui s’appelle Transactions et qui implémente Iterable (pour pouvoir utiliser une boucle for-each dessus)
(je met que les méthodes importantes)
[code]public class Transaction implements Iterable{
private ArrayList<E> produits;
public Transaction(){
produits = new ArrayList();
}
public Iterator iterator(){
return produits.iterator();
}
}[/code]
Ensuite dans une autre classe, j’ai une ArrayList de transactions, transactions qui contiennent des String.
Je la déclare comme suit :
Enfin, voilà le bout de code qui me pose problème : je souhaite afficher toutes les transactions ligne par ligne :
public void afficherDonnees(){
for(Transaction<String> transaction : transactions){
int noTransaction=1;
System.out.print("Transaction n°"+noTransaction++ + ": ");
for(String produit : transaction){
System.out.print(produit + " ");
}
System.out.println("\n");
}
}
La le compilateur bloque sur la ligne “for(String produit : transaction){” en me disant :
aPriori\Donnees.java:72: incompatible types
found : java.lang.Object
required: java.lang.String
for(String produit : t){
^
Bref je pourrais faire plus simple en créant une méthode afficherTransaction()… mais je comprends pas pourquoi ça ne fonctionne pas là.