Tengo una pregunta porque me estoy poniendo un poco confundido (o tal vez no estoy notando algo obvio). Digamos que tengo algo de código fuente que contiene una gran cantidad de clases que contienen un gran número de campos estáticos definidos como éste:@SuppressWarnings ("serial")
public final class ConverterTYPE {
private final static HashMap<String, Byte> STRING_MAP = new HashMap<String, Byte>() {
{
put("A", new Byte((byte)12));
put("B", new Byte((byte)13));
}
};
}
Como todos sabemos, los campos estáticos no van a ser serializado.
Sin embargo, Java (y Eclipse) se queja de que "La clase serializable no declara un campo estático final serialVersionUID de tipo long". ¿Por qué no se dan cuenta de que la estática no va a ser serializada?
Y la siguiente pregunta: ¿sería una solución correcta para este problema usar @SuppressWarnings("serial")
para deshacerse de todas esas advertencias?
EDIT:
Ninguno de mis clases implementa la interfaz Serializable (o ninguno de sus superclases). Y Eclipse apunta al HashMap<String, Byte>
con sus advertencias. ¿Por qué no detecta que es un campo estático?
Para que lo sepa, HashMap implementa la interfaz Serializable. Dado que está extendiendo HashMap a una clase anónima, esa clase anónima suya también implementa Serializable. – Numeron
Fuera de tema: https: //blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti-pattern/ –