2012-02-27 19 views
7

¿Es posible catalogar/desasializar una clase anónima en Java?Serialización de clase anónima en Java

Ejemplo:

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

Mi problema es que yo quiero hacer algunas tareas de administración personalizado para que no necesito una liberación para cada tarea. Entonces, lo que estoy tratando de hacer es a través de Groovy scripting engine custom task vía HTTP endpoint y serializarlos en db para ejecutarlos a tiempo.

Respuesta

6

Es posible, por peligroso. El compilador genera el nombre/número de clases anónimas y se basa en el orden en que aparecen en el archivo. p.ej. si intercambias el orden de dos clases, sus nombres intercambiarán también. (Las clases se deserializan por su nombre)

0

Esto es ciertamente posible. Java genera un nombre interno para clases anónimas (Similar a DeclaredInThisClass $ 1, DeclaredInThisClass $ 2 si las declara en una clase llamada DeclaredInThisClass) y las serializará/deserializará felizmente.

0

Sure! En su clase de caso, Task debe implementar la interfaz Serializable.

6

Tenga en cuenta que, además de la tarea que implementa Serializable, la clase externa también debe ser Serializable. Puede terminar serializando estados miembros innecesarios.

Cuestiones relacionadas