stringtranslate.com

Contaminación por montones

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 ); } } }          

Lectura adicional

Referencias

  1. ^ ab "Los tutoriales de Java SE". Oracle . Consultado el 16 de julio de 2014 .
  2. ^ ab Langer, Angelika. "Preguntas frecuentes sobre genéricos de Java: contaminación del montón". angelikalanger.com/ . Consultado el 15 de julio de 2014 .