2012-02-27 37 views
7

E 'possibile searializzare/desearializzare la classe anonima in Java?Serializzazione della classe anonima in Java

Esempio:

ByteArrayOutputStream operationByteArrayStream = new ByteArrayOutputStream(); 
ObjectOutputStream oos = new ObjectOutputStream(operationByteArrayStream); 
oos.writeObject(new Task() { 
    public void execute() { 
     System.out.println("Do some custom task")); 
    } 
}); 

mio problema è che voglio fare alcuni compiti di amministrazione personalizzato in modo che non ho bisogno di un rilascio per ogni compito. Quindi, quello che sto cercando di fare - è tramite Groovy motore di scripting post attività personalizzata via endpoint HTTP e serializzarli in db per eseguirli in tempo.

risposta

6

È possibile, da pericoloso. Il nome/numero di classi anonime è generato dal compilatore e si basa sull'ordine in cui appaiono nel file. per esempio. se cambi l'ordine di due classi, anche i loro nomi si scambieranno. (Le classi sono deserializzate per nome)

0

Questo è certamente possibile. Java genera un nome interno per le classi anonime (simile a DichiaratoInThisClass $ 1, DichiaratoInThisClass $ 2 se le dichiari in una classe denominata DeclaredInThisClass) e le serializzerà/deserialize felicemente.

0

Sicuro! Nel tuo caso classe Task dovrebbe implementare l'interfaccia Serializable.

6

Nota che oltre a Task che implementa Serializable, anche la classe esterna deve essere serializzabile. Si può finire per serializzare stati membri non necessari.

Problemi correlati