Si es posible, las partes no serialiable se puede configurar como transitorio
private transient SomeClass myClz;
contrario, puede utilizar Kryo. Kryo es un marco de serialización de gráficos de objetos rápido y eficiente para Java (por ejemplo, la serialización JAVA de java.awt.Color requiere 170 bytes, Kryo solo 4 bytes), que también puede serializar objetos no serializables. Kryo también puede realizar copias/clonaciones profundas y superficiales automáticas. Esto es copia directa de un objeto a otro, no object->bytes->object
.
Aquí hay un ejemplo de cómo utilizar Kryo
Kryo kryo = new Kryo();
// #### Store to disk...
Output output = new Output(new FileOutputStream("file.bin"));
SomeClass someObject = ...
kryo.writeObject(output, someObject);
output.close();
// ### Restore from disk...
Input input = new Input(new FileInputStream("file.bin"));
SomeClass someObject = kryo.readObject(input, SomeClass.class);
input.close();
objetos serializados También se puede comprimir mediante el registro serializador exacta:
kryo.register(SomeObject.class, new DeflateCompressor(new FieldSerializer(kryo, SomeObject.class)));
¿Se puede modificar miclase2 o no? ¿El valor de propiedad no serializable debe conservarse por serialización? El enfoque correcto depende de esto. – erickson
MyClass2 podría ser modificado. Sin embargo, sería mejor no hacerlo, ya que construyo sobre él y puede ser modificado por otros. – Burkhard