Why is a serializable inner class not serializable?

前端 未结 3 922
长情又很酷
长情又很酷 2020-12-05 13:56

The following code:

public class TestInnerClass {

    public static void main(String[] args) throws IOException {
        new TestInnerClass().serializeInne         


        
3条回答
  •  长情又很酷
    2020-12-05 14:24

    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();
    

提交回复
热议问题