Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

java generics

4 réponses
Avatar
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.

4 réponses

Avatar
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
Avatar
MooGle
On 16 juil, 23:46, Dam R wrote:
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
Avatar
Xavier Tarrago
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" a écrit dans le message de news:

On 16 juil, 23:46, Dam R wrote:
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
Avatar
none
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é.