Downcasting
Résolu/Fermé
Urgent_Java
-
Modifié le 29 nov. 2017 à 18:12
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 29 nov. 2017 à 18:25
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 29 nov. 2017 à 18:25
1 réponse
Dalfab
Messages postés
703
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
1 mars 2023
100
29 nov. 2017 à 15:26
29 nov. 2017 à 15:26
Il ne faut pas appeler 2 fois itr.next(), car le second va accéder à l'instance suivante.
Document doc = itr.next();
if ( doc instanceof Livre ) {
Livre livre = (Livre)doc;//
29 nov. 2017 à 16:15
29 nov. 2017 à 18:25
L'utilité des Iterator est quasi nulle depuis Java 5, donc à part quelques cas particuliers, si tu utilises un Iterator c'est par erreur.
Remarque : même chose pour la classe Vector qui devrait être remplacé par ArrayList dans la plupart des cas depuis Java 2 (et dans les autres cas par l'utilisation de Collections.synchronizedList).
Java 5+
public void afficherAuteurs() { for (Document doc : vct) { if (doc instanceof Livre) { Livre l = (Livre) doc; System.out.println(l.getAuteur()); } } }Java 8+
public void afficherAuteurs() { vct.stream() .filter(doc -> doc instanceof Livre) .map(doc -> ((Livre) doc).getAutheur()) .forEach(System.out::println); }