Ho una domanda perché sto diventando un po 'confuso (o forse non sto notando qualcosa di ovvio). Diciamo che ho un po 'di codice sorgente che contiene un sacco di classi che contengono un gran numero di campi statici definiti come questo:@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));
}
};
}
Come tutti sappiamo, i campi statici non stanno per essere serializzato.
Tuttavia, Java (ed Eclipse) lamentano che "la classe serializzabile non dichiara un campo seriale serialVersionUID finale di tipo lungo". Perché non possono notare che la statica non verrà serializzata?
E la prossima domanda: sarebbe una soluzione corretta a questo problema per utilizzare @SuppressWarnings("serial")
per sbarazzarsi di tutti questi avvertimenti?
EDIT:
Nessuna delle mie classi implementa l'interfaccia Serializable (o nessuna delle loro superclassi). E Eclipse punta a HashMap<String, Byte>
con i suoi avvisi. Perché non rileva che è un campo statico?
Solo così sei consapevole - HashMap implementa l'interfaccia Serializable. Dato che estendi HashMap in una classe anonima, anche la tua classe anonima implementa anche Serializable. – Numeron
Off-topic: https: //blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti-pattern/ –