2012-11-04 20 views
8

Le enumerazioni sono considerate il modo migliore per i singleton e una delle ragioni è che eredita implicitamente Serializable.Enum, singleton e deserializzazione

Ma come l'enumerazione impedisce il problema della serializzazione dei singleton?

+0

Enum è un singleton ma quali sono i problemi di deserializzazione dei singleton? – clinton

+2

@clinton: se si rende serializzabile un singleton, e non si preoccupa di come è deserializzato, si e con una nuova istanza del singleton ogni volta che viene deserializzato, che ne interrompe la singolarità. –

+0

@JBNizet grazie per le informazioni. Prima di adesso non avevo cercato la questione dei singleton. O forse non mi è sembrato importante. – clinton

risposta

1

La serializzazione come argomento per l'utilizzo di enum per singleton non ha senso.

Se l'enum singleton è stato, lo stato viene perso durante la serializzazione/deserializzazione.

Se il singleton è apolide, a chi importa della sua identità?

+0

Se il singleton è stateless e il codice usa (ad esempio) 'if (someVar == SomeSingleton.INSTANCE)', ti interessa davvero della sua identità. –

+0

Non esiste un caso d'uso nel mondo reale. Jushua Bloc ha inventato questa cosa. Solitamente un singleton NON dovrebbe essere serializzabile comunque, usare enum per facilitare la serializzazione è semplicemente sbagliato. Inoltre, Singleton è una strategia di implementazione, non qualcosa che dovremmo pubblicizzare all'interfaccia. – irreputable