The following code:
public class TestInnerClass {
public static void main(String[] args) throws IOException {
new TestInnerClass().serializeInne
how about make TestInnerClass serializable?
public class TestInnerClass implements Serializable { }
InnerClass cannot be serialised because to instantiate it (as required during deserialization) you need a reference to an instance of the outer class
Instances of inner classes cannot exist without an instance of the outer class.
i.e
OuterClass o = new OuterClass();
OuterClass.InnerClass o_i = o.new InnerClass();
If you use static inner class, it will be possible to serialise the static inner class. The instances of static inner classes can be created standalone.
i.e
OuterClass o = new OuterClass();
OuterClass.InnerClass i = new OuterClass.InnerClass();
what if InnerClass needs this access?
Then it needs the outer class instance, and it must be serialized along with the inner class.
Is there a way to serialize a non-static inner class without the enclosing class, e.g. by making the reference to the outer class transient?
No. What would happen when you deserialize such a class and then try to call an instance method of the outer class? A NullPointerException
?