Java: “Heap pollution” [fermé]

63

Une " pollution de tas " comme dans les types non réifiables (Tutoriels Java ™> Apprentissage du langage Java> Génériques (mise à jour))

Pourquoi est-ce appelé ainsi?

moucheron
la source
3
Une bonne raison de ne pas avoir d’avertissements dans votre projet.
@ ThorbjørnRavnAndersen Bon. Mais quand même - il devrait y avoir une raison / un dispositif mnémonique derrière ce nom. C'est drôle mais même Google ne semble pas savoir pourquoi.

Réponses:

72

La pollution de tas implique simplement que vous avez des "mauvaises choses" dans votre tas. C'est une analogie avec (par exemple) la pollution de l'eau dans laquelle vous avez des "mauvaises choses" dans l'eau.

Plus précisément, les mauvaises choses ici sont des objets de type Aoù vous devriez avoir des objets de type B... en fonction du typage statique. Un certain trou dans le typage statique permet aux mauvaises choses de s'infiltrer dans le tas ... là où elles risquent de causer des dommages (par exemple inattendus ClassCastExceptions) au moment de l'exécution.

Cette analogie n’est pas particulièrement bonne, mais c’est la terminologie que les gens de Java ont inventée ... et ils l’ont (en fait) définie dans la page à laquelle vous avez accédé, et probablement à d’autres endroits.


Mais quand même - il devrait y avoir une raison / un mécanisme mnémonique derrière ce nom.

Pourquoi devrait-il y avoir? Il y a beaucoup de mots et de phrases en anglais où personne ne connaît vraiment l'origine ou le raisonnement. Ou où l'origine est connue, mais est illogique. Par exemple, l’origine supposée du terme " bug " faisant référence à une faille dans un programme informatique. Ou la signification actuelle du terme "saut quantique" dans la culture populaire. Ou le mot "gay".

(Mais, dans le cas de "pollution de tas", la source >> est << connue, et le raisonnement qui sous-tend le choix du terme >> est «évident» ... pour les personnes du même contexte linguistique et culturel que les auteurs.)

C'est drôle mais même Google ne semble pas savoir pourquoi.

Pas vraiment. Cela signifie simplement que personne n’avait pensé auparavant à demander une définition dans un endroit indexé par Google. 1) L'utilisation est limitée à la programmation Java autant que je sache, et 2) l'analogie est évidente ... pour la plupart des gens qui utiliseraient le terme.

Stephen C
la source