Bonjour, le problème est simple : je dispose d’un panier représenté par une liste d’objets. La nourriture est un objet. Donc, il devrait être possible d’ajouter de la nourriture au panier.
Mais le code ne compile pas et je ne comprends pas pourquoi…
import java.util.ArrayList;
public class Objet {
}
public class Nourriture extends Objet {
}
public class Panier {
private ArrayList<Objet> elements = new ArrayList<Objet>();
public void ajouterObjets(ArrayList<Objet> liste) {
elements.addAll(liste);
}
}
public class Main {
public static void main(String[] args) {
Panier panier = new Panier();
ArrayList<Nourriture> nourriture = new ArrayList<Nourriture>();
panier.ajouterObjets(nourriture);
}
}
L’erreur : The method ajouterObjets(ArrayList<Objet>) in the type Panier is not applicable for the arguments (ArrayList<Nourriture>)
L’erreur est explicite mais comme Nourriture extends Objet
, pourquoi ne caste t’il automatiquement?
Je pourrais faire une méthode ajouterNourriture
… sauf que dans mon projet réel, cela reviendrait à ajouter une dizaine de méthode comme ça (et avec le même code interne donc ça n’a aucun sens)…
+0
-0