accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: java generics

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.java ] 

Retour : Accueil du site fr comp lang java   charte stats de ce groupe


  Sujet:   Re: java generics  
 De: ""dam\&qu...@(none)" (none)
 Groupes: fr.comp.lang.java
 Organisation: Guest of ProXad - France
 Date: 19. Jul 2008, 15:59:23
 References: 1
Xavier Tarrago a écrit :
> Bonjour,
> Je me frotte aux generics java et je ne comprends pas certaines choses. D'ou 
> les questions suivantes:
> 
> 1 le point que je ne comprends pas est pourquoi on peut écrire
> 
> ArrayList<A> a1 = null;
> ArrayList<? extends A> a2 = a1;
> 
> et pas
> 
> Map<String, ArrayList<A>> m1 = null;
> Map<String, ArrayList<? extends A>> m2  = m1; // erreur
> 
> Type mismatch: cannot convert from Map<String,ArrayList<A>> to 
> Map<String,ArrayList<? extends A>>
> 
> Cordialement. 
> 
> 
Salut,
voici pourquoi ce n'est pas autorisé :
public class A {
}

public class B extends A {
   public B() {
     super();
   }
}

Map<String, ArrayList<A>> m1 = null;
m1.put("foo", new ArrayList<A>());
m1.put("bar", new ArrayList<B>()); // erreur il faut que ce soit A

Map<String, ArrayList<? extends A>> m2  = m1; /* erreur mais imagine que
                                                  cela passe */
m2.put("foo", new ArrayList<A>()); // ok
m2.put("bar", new ArrayList<B>()); // ok

Mais m2 c'est m1 donc tu as :
m1.put("bar", new ArrayList<B>());
qui devrait passer donc c'est tout simplement interdit de dire que :
m2 = m1;

Par contre tu peux faire :
Map<String, ? extends ArrayList<? extends A>> m3  = m1;
mais
m3.put("foo", new ArrayList<A>()); // erreur
m3.put("bar", new ArrayList<B>()); // erreur
m3.put("foo", null); // ok

donc tu peux ajouter seulement l'élément null pour les listes avec m3.

En espérant que cela t'ai aidé.


DateSujet  Auteur
19.07.
o   Re: java generics
none
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)
Usenet Gratuit