2010-05-08 8 views
7

Tengo un pequeño problema con una clase en la que actualmente estoy escribiendo una función para guardar.Hacer que XStream ignore una variable privada específica

Estoy usando XStream (com.thoughtworks.xstream) para serializar una clase a XML usando DOMDriver.

La clase tiene el siguiente aspecto:

public class World { 
    private Configuration config; 
    public World(Configuration config) { 
    this.config = config; 
    } 
} 

Por lo tanto, el problema aquí es que no quiero para serializar configuración cuando la serialización mundo, y no me gustaría dar xstream una instancia de configuración preconstruidos al llamar fromXml().

El problema aquí es principalmente el diseño de clase, la configuración contiene una referencia privada a las clases de la GUI y, por lo tanto, serializar la configuración significa serializar toda la aplicación completamente con GUI, etc. Y eso es algo malo.

¿Hay alguna manera de indicar a XStream que no serialice la configuración de campo privada y que al momento de la carga suministre XStream con una instancia de configuración?

saludos Daniel

Respuesta

10

Como documentación dice aquí: http://x-stream.github.io/annotations-tutorial.html (omitiendo los campos) que puede utilizar @XStreamOmitField anotación a "ignorar" campos.

+1

Gracias por esta respuesta. Como se explica en esta página: las anotaciones se procesarán solo si llama a 'xstream.processAnnotations()' o 'xstream.autodetectAnnotations (true)'. – mins

+2

Alternativamente, 'XStream.omitField'. – amos

Cuestiones relacionadas