En pre Java 5, no había anotaciones. Como resultado, no podría agregar metadatos a una clase.¿Por qué no se desaprobó java.io.Serializable en Java 5?
Para marcar una clase como serializable, había que implementar la interfaz Serializable (que es sólo eso, un marcador) y el uso de nuevas transient
palabras clave para marcar un campo como no serializable si es necesario, algo así como:
public class MyClass implements Serializable {
...
private transient Bla field;
...
}
Ahora usted podría teóricamente hacer uso de anotaciones (este es un uso perfecto para ellos) y tienen:
@Serializable
public class MyClass {
...
@Transient
private Bla field;
...
}
Pero la interfaz y la palabra clave no estaban en desuso y se añadió ninguna anotación en Java 5 para reemplazarlos .
¿Cuáles son las consideraciones para esta decisión de mantener la interfaz y la palabra clave?
Por supuesto, existe la cuestión de la compatibilidad con el código pre Java 5, pero en algún momento terminará (por ejemplo, en relación con las nuevas características de los genéricos, el JLS especifica que It is possible that future versions of the Java programming language will disallow the use of raw types). Entonces, ¿por qué no preparar el camino para anotaciones serializadas también?
¿Alguna idea? (Aunque yo preferiría referencias concretas: D que I podido encontrar)
Normalmente, esto se hace para hacer que el código existente sea compatible con versiones anteriores. Por lo tanto, puede actualizar fácilmente pero migrar paso a paso a las nuevas anotaciones. –
¿A qué sección hace referencia en el JLS? – Atreys
@Atreys: El que contiene el * Es posible que versiones futuras del lenguaje de programación Java no permitan el uso de tipos crudos * observación – ElenaT