Java: “Contaminación del montón”

58

Una " Contaminación del montón ", como en Non-Reifiable Tipos (Los tutoriales de Java ™ > Aprendiendo el lenguaje Java > Genéricos (actualizados))

¿Por qué se llama así?

    
pregunta gnat 08.07.2012 - 09:29

1 respuesta

66

La contaminación del montón simplemente implica que tienes "cosas malas" en tu montón. Es una analogía con (por ejemplo) la contaminación del agua, que es donde tienes "cosas malas" en el agua.

Específicamente, las cosas malas aquí son objetos de tipo A donde debería tener objetos de tipo B ... de acuerdo con la escritura estática. Algún agujero en la escritura estática permite que las cosas malas se filtren en el montón ... donde es probable que cause daños (por ejemplo, ClassCastExceptions inesperado) en el tiempo de ejecución.

No es una analogía particularmente buena, pero es la terminología que la gente de Java acuñó ... y la han definido (en efecto) en la página a la que te vinculaste, y probablemente en otros lugares.

  

Pero aún así, debería haber una razón / dispositivo mnemotécnico detrás de ese nombre.

¿Por qué debería haber? Hay muchas palabras y frases en uso en inglés donde nadie sabe realmente el origen o el razonamiento. O donde se conoce el origen, pero es ilógico. Por ejemplo, el supuesto origen del término "error" se refiere a una falla en un programa de computadora. O el significado actual del término "salto cuántico" en la cultura popular. O la palabra "gay".

(Pero, en el caso de "contaminación de pilas", la fuente > > es < < y el razonamiento detrás de la elección del término > > es < < auto evidente ... para personas de los mismos antecedentes lingüísticos y culturales que los autores.)

  

Es divertido, pero incluso Google no parece saber por qué.

En realidad no. Simplemente significa que nadie había pensado previamente para pedir una definición en un lugar que Google indexa. 1) El uso está restringido a la programación de Java AFAIK, y 2) la analogía es obvia ... para la mayoría de las personas que usarían el término.

    
respondido por el Stephen C 08.07.2012 - 11:10

Lea otras preguntas en las etiquetas