package com.siyeh.igtest.serialization.externalizable_without_public_no_arg_constructor; import java.io.*; abstract class e implements Externalizable { protected e() {} } class eImpl extends e { public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { } public void writeExternal(ObjectOutput out) throws IOException { } } class eImpl1 extends e { private eImpl1() {} public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { } public void writeExternal(ObjectOutput out) throws IOException { } } class eImpl2 extends e { public eImpl2(int i) { System.out.print(i); } public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { } public void writeExternal(ObjectOutput out) throws IOException { } } class AnonymousTest { public static void main(String[] args) throws IOException, ClassNotFoundException { final String h = "Hello World"; final Externalizable externalizable = new Externalizable() { private String string = h; @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeUTF(string); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { string = in.readUTF(); } }; final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); final ObjectOutputStream out = new ObjectOutputStream(bytes); out.writeObject(externalizable); out.close(); final ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray())); final Object o = in.readObject(); System.out.println("o = " + o); } } public class ExternalizableWithoutPublicNoArgConstructor implements Externalizable { protected ExternalizableWithoutPublicNoArgConstructor() {} @Override public void writeExternal(ObjectOutput out) throws IOException { } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { } public Object writeReplace() throws ObjectStreamException { return null; } }