¿Cómo se puede mejorar Java para que ya no sea necesario realizar el borrado de tipo?

15

El tutorial oficial de Java sobre genéricos explica el borrado de tipo y por qué se agregó a el compilador:

  

Cuando se crea una instancia de un tipo genérico, el compilador traduce esos tipos mediante una técnica llamada borrado de tipo, un proceso en el que el compilador elimina toda la información relacionada con los parámetros de tipo y los argumentos de tipo dentro de una clase o método. El borrado de tipos permite que las aplicaciones Java que usan genéricos mantengan la compatibilidad binaria con las bibliotecas y aplicaciones Java que se crearon antes que los genéricos.

Lo más probable es que fuera un enfoque pragmático, o quizás el menos doloroso. Sin embargo, ahora que los genéricos son ampliamente compatibles en toda la industria, ¿qué se puede hacer para que no necesitemos el borrado de tipos? ¿Es factible sin necesidad de romper la compatibilidad hacia atrás, o si es factible, es práctico?

¿La última declaración en la cita anterior se ha convertido en autorreferencial? Es decir: "el borrado de tipos permite que las aplicaciones Java que usan genéricos mantengan la compatibilidad binaria con las bibliotecas de Java y las aplicaciones que se crearon con versiones de Java que realizan el borrado de tipo".

    
pregunta auser 05.06.2012 - 14:24

1 respuesta

7

El final de la vida útil se aplica a Java Development Toolkit y Java Runtime Environment. Y solo las versiones Oracle (Sun). Pero no se aplica a las aplicaciones escritas por terceros. La intención es nunca romper el código que se haya ejecutado en la JVM, por lo que es poco probable que Java deje de realizar el borrado de tipos.

Por supuesto, C # también introdujo los genéricos en una versión posterior de manera compatible con versiones anteriores sin borrar el tipo, pero básicamente significaba duplicar todas las clases de colección. Lo que supongo es lo que los diseñadores de Java no quieren hacer y, por lo tanto, la razón por la que eligieron el borrado de tipos en primer lugar. Sin tipos de valor, la ventaja de los genéricos no borrados de tipo no es tan grande.

    
respondido por el Jan Hudec 05.06.2012 - 14:48

Lea otras preguntas en las etiquetas