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

Bizarrerie Generics

1 réponse
Avatar
Mike
Bonjour.

Je ne parviens pas =E0 trouver ou je me trompe sur une d=E9claration de
g=E9n=E9riques. Quelqu'un aurait-il une id=E9e ?

1/

Map<Long, Integer>[] test =3D new Map<Long, Integer>[] { new
HashMap<Long, Integer>() };

N'est pas accept=E9.
Message d'eclipse : Cannot create a generic array of Map<Long,Integer>

2/

Map<Long, Integer>[] test =3D null;

ca, c'est ok !
C'est en fait la d=E9claration de l'erreur pr=E9c=E9dente, dans
l'instanciation.
C'est donc que le type est bien correcte syntaxiquement.

3/ Eventuellement, je peux faire

Map<Long, Integer>[] test =3D (Map<Long, Integer>[])new Map[] { new
HashMap() };

mais j'ai une alerte :
Type safety: The cast from Map[] to Map<Long,Integer>[] is actually
checking against the erased type Map<K,V>[]

4/ Bizarrement, je peux faire aussi ca :

Map<?, ?>[] test =3D new Map<?, ?>[] { new HashMap<Long, Integer>() };

qui ne m'avance pas, mais qui semble indiquer que la syntaxe est
correcte.


Les messages d'erreur sont obtenus sous eclipse, mais je me suis
assur=E9 que javac avait la meme r=E9action. Seuls les messags sont
diff=E9rents.



Merci d'avance =E0 celui qui me r=E9soudra ce casse t=E9te ...

Mike

1 réponse

Avatar
xav
Mike wrote:
Bonjour.

Je ne parviens pas à trouver ou je me trompe sur une déclaration de
génériques. Quelqu'un aurait-il une idée ?

1/

Map<Long, Integer>[] test = new Map<Long, Integer>[] { new
HashMap<Long, Integer>() };

N'est pas accepté.
Message d'eclipse : Cannot create a generic array of Map<Long,Integer>

2/

Map<Long, Integer>[] test = null;

ca, c'est ok !
C'est en fait la déclaration de l'erreur précédente, dans
l'instanciation.
C'est donc que le type est bien correcte syntaxiquement.

3/ Eventuellement, je peux faire

Map<Long, Integer>[] test = (Map<Long, Integer>[])new Map[] { new
HashMap() };

mais j'ai une alerte :
Type safety: The cast from Map[] to Map<Long,Integer>[] is actually
checking against the erased type Map<K,V>[]

4/ Bizarrement, je peux faire aussi ca :

Map<?, ?>[] test = new Map<?, ?>[] { new HashMap<Long, Integer>() };

qui ne m'avance pas, mais qui semble indiquer que la syntaxe est
correcte.


Les messages d'erreur sont obtenus sous eclipse, mais je me suis
assuré que javac avait la meme réaction. Seuls les messags sont
différents.



Merci d'avance à celui qui me résoudra ce casse téte ...

Mike



generics array dans google, la premiere reponse a l'air bien fournie ;)