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 sin marcar . [1] Más tarde, durante el tiempo de ejecución, la contaminación del montón a menudo provocará una ClassCast Exception . [2]
La contaminación del montón en Java puede ocurrir cuando los argumentos y las variables de tipo no se materializan en tiempo de ejecución. Como resultado, se implementan diferentes tipos parametrizados 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 da como resultado 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 de pilas en un contexto no varargs
clase pública HeapPollutionDemo { public static void main ( String [] args ) { Set s = new TreeSet < Integer > (); Set < String > ss = s ; // advertencia sin marcar s . add ( new Integer ( 42 )); // otra advertencia sin marcar Iterator < String > iter = ss . iterator (); mientras ( iter . hasNext ()) { String str = iter . next (); // Se lanza una ClassCastException System . out . println ( str ); } } }