479 votes

Possible pollution du tas via le paramètre varargs

Je comprends que cela se produit avec Java 7 lors de l'utilisation de varargs avec un type générique;

Mais ma question est..

Que signifie exactement Eclipse quand il dit que "son utilisation pourrait potentiellement polluer le tas?"

Et

Comment la nouvelle annotation @SafeVarargs empêche-t-elle cela?

9 votes

0 votes

0 votes

Je vois cela dans mon éditeur : Pollution possible du tas provenant d'un type vararg paramétré

2voto

Pavel Ryzhov Points 838

Il est plutôt sûr d'ajouter l'annotation @SafeVarargs à la méthode lorsque vous pouvez contrôler la façon dont elle est appelée (par exemple, une méthode privée d'une classe). Vous devez vous assurer que seules les instances du type générique déclaré sont passées à la méthode.

Si la méthode est exposée à l'extérieur sous forme de bibliothèque, il devient difficile de détecter de telles erreurs. Dans ce cas, il est préférable d'éviter cette annotation et de réécrire la solution avec un type de collection (par exemple, Collection>) en entrée au lieu de varargs (Type1...).

Quant à la dénomination, le phénomène de la pollution du tas est assez trompeur à mon avis. Dans la documentation, le véritable tas JVM n'est même pas mentionné. Il y a une question sur Software Engineering qui contient des réflexions intéressantes sur la dénomination de ce phénomène.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X