En el lenguaje de programación Java , la contaminación del montón es una situación que surge cuando una variable de un tipo parametrizado hace referencia a un objeto que no es de ese tipo parametrizado. [ 1 ] Esta situación normalmente se detecta durante la compilación y se indica con una advertencia no verificada . [ 1 ] Posteriormente, durante el tiempo de ejecución , la contaminación del montón a menudo causará una excepción ClassCast . [ 2 ]
La contaminación del montón en Java puede ocurrir cuando los argumentos y variables de tipo no se reifican en tiempo de ejecución. Como resultado, diferentes tipos parametrizados son implementados por la misma clase o interfaz en tiempo de ejecución. Todas las invocaciones de una declaración de tipo genérico dada comparten una única implementación en tiempo de ejecución . Esto genera la posibilidad de contaminación del montón. [ 2 ]
En determinadas condiciones, una variable de un tipo parametrizado puede hacer referencia a un objeto que no sea de ese tipo parametrizado. La variable siempre hará referencia a un objeto que sea una instancia de una clase que implemente el tipo parametrizado.
Contaminación por montículos en un contexto sin argumentos variables
public class HeapPollutionDemo { public static void main ( String [] args ) { Set s = new TreeSet < Integer > (); Set < String > ss = s ; // advertencia no verificada s . add ( new Integer ( 42 )); // otra advertencia no verificada Iterator < String > iter = ss . iterator ();while ( iter.hasNext ( ) ) { String str = iter.next ( ) ; // Se lanza ClassCastException System.out.println ( str ) ; } } }Lecturas adicionales
- Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad; Buckley, Alex (2014). "4.12.2" . Especificación del lenguaje Java, Java SE 8.ª edición . Addison-Wesley. págs. 81-82 . ISBN 978-0-13-390069-9.
- Friesen, Jeff (2011). Comenzando con Java 7 . Voz de experto en Java. Presione. pag. 211.ISBN 978-1430239093.
- Reese, Richard; Reese, Jennifer (2012). Libro de recetas de nuevas funciones de Java 7 (PDF) . Publicación de paquetes. págs. 38 a 40. ISBN 978-1-84968-562-7. Archivado del original (PDF) el 23-07-2014 . Consultado el 16-07-2014 .
- Stenzel, Kurt; Grandy, Holger; Reif, Wolfgang (2008). «Verificación de programas Java con genéricos». Metodología algebraica y tecnología de software . Notas de clase en informática. Vol. 5140. pp. 315–329 . doi : 10.1007/978-3-540-79980-1 . ISBN 978-3-540-79979-5.(Se requiere suscripción)
Referencias
- Java (plataforma de software)
- Temas básicos de lenguajes de programación