Suppose the implementation of SomeInterface just does something similar to
public class SomeInterfaceImpl implements SomeInterface { @Override public SomeClass getSomething(String someParameter) { return new SomeClass(someParameter); } }
Why SomeInterfaceImpl your program fail to serialize SomeInterfaceImpl objects when SomeClass objects are created only on the fly?
Minimal example
Main.java
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.logging.Level; import java.util.logging.Logger; public class Main { public static void main(String[] args) { try (final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); final ObjectOutputStream out = new ObjectOutputStream(byteArrayOutputStream)) { final SomeInterfaceImpl someInterfaceImpl = new SomeInterfaceImpl(); final SomeClass something1 = someInterfaceImpl.getSomething("Test"); out.writeObject(someInterfaceImpl); try (final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); final ObjectInputStream in = new ObjectInputStream(byteArrayInputStream)) { final SomeInterface someInterface = (SomeInterface) in.readObject(); final SomeClass something2 = someInterface.getSomething("Test"); final String someParameter1 = something1.getSomeParameter(); System.out.println(someParameter1); final String someParameter2 = something2.getSomeParameter(); System.out.println(someParameter2); } catch (ClassNotFoundException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } catch (IOException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } }
source share