I was wondering, if I can cheat serialization by wrapping them in local nested classes, something like this:
I have a service which I need to pass around, but it internally has some very complex data.
 interface ComplexService {
       IncredibleComplexObject getData();
   }
So I thinking about wrapping it in another class that is serializeable via decorator pattern.
public final class Utils {
   public static Serializable wrap(final ComplexService service) {
       class WrapperService implements ComplexService, Serializeable {
           @Override
           public IncredibleComplexData getData() {
                return service.getData();
           }
       };
       return new WrapperService();
   }
}
I actually don't believe that I can cheat serialization like that, because it would be a little bit too much magic if Java could actually recreate my class that is dependent on my final ComplexService-parameter. But I am wondering, why exactly this fails and what exception would be thrown, where and why.
(just for clarification why I would want to do this: I am on android and I need to pass this service to a Fragment, which naturally can only save serializeable objects).
 
     
    