java generics

Le
Xavier Tarrago
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>>

2 La deuxième question est générale. Ou peut-on trouver ce genre
d'information? Les tutoriaux sur le site sun sont très succints. Y a t'il
des listes de discussion comme pour awt/swing.

Cordialement.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Dam R
Le #16346571
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>>

2 La deuxième question est générale. Ou peut-on trouver ce genre
d'information? Les tutoriaux sur le site sun sont très succints. Y a t'il
des listes de discussion comme pour awt/swing.

Cordialement.





Salut,
pour les generics je te recommande si tu n'es pas déjà tombé dessus :
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
MooGle
Le #16350231
On 16 juil, 23:46, Dam R
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>>

> 2 La deuxième question est générale. Ou peut-on trouver ce genre
> d'information? Les tutoriaux sur le site sun sont très succints. Y a t'il
> des listes de discussion comme pour awt/swing.

> Cordialement.

Salut,
pour les generics je te recommande si tu n'es pas déjà tombé dessus :http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf



http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
Xavier Tarrago
Le #16358881
Merci beaucoup. Je connaissais le tutorial de sun qui donne pas mal d'infos
et d'exemples. Le faq d'Angelika Langer est une vraie mine d'infos. Très
impressionnant.

"MooGle"
On 16 juil, 23:46, Dam R
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>>

> 2 La deuxième question est générale. Ou peut-on trouver ce genre
> d'information? Les tutoriaux sur le site sun sont très succints. Y a
> t'il
> des listes de discussion comme pour awt/swing.

> Cordialement.

Salut,
pour les generics je te recommande si tu n'es pas déjà tombé dessus
:http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf



http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
none
Le #16370471
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é.
Publicité
Poster une réponse
Anonyme