serialization - Overriding class signature in java -


i have class follows in .jar file (library file):

class a{ //someimplementation } 

i make implements serializable interface follows:

class implements serializable { //the same implementation present in classa } 

i not want decompile jar file, changing class signature , archiving again after compilation.

is there way writing hooks achieve this? kindly provide pointers/suggestions. ultimate aim achieve implementing serializable interface without modifying jar file.

you can achieve using serialization proxy pattern (effective java 2nd edition item 78)

a few links pattern :

http://jtechies.blogspot.com/2012/07/item-78-consider-serialization-proxies.html

http://java.dzone.com/articles/serialization-proxy-pattern

follow up: instance control in java without enum

make new class extends a , serializable. in order avoid serialization errors, however, because a isn't serializable, need make serializationproxy creates new instance via constructor or factory method instead of normal java serialization mechanism of explicitly setting fields outside of constructor.

public class myserializablea extends implements serializable{     private final foo foo;     private final bar bar;    ...      private object writereplace() {          return new serializationproxy(this);     }     //this forces use serializationproxy     private void readobject(objectinputstream stream) throws invalidobjectexception {          throw new invalidobjectexception("use serialization proxy instead.");     }      //this private inner class our serialization    private static class serializationproxy implements serializable {         private final foo foo;         private final bar bar;    ...      public serializationproxy(myserializablea mya) {         this.foo = mya.getfoo();         this.bar = mya.getbar();         ...//etc     }      private object readresolve() {         return new myserializablea(foo, bar,...);     }  } }  

the downside when want serialize a, have wrap in mya. when deserializing, cast a work fine.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -