私有内部的继承class

Inheritance of private inner class

我想把Serializable实现成class,但是不允许修改。我的想法是制作另一个 class 继承自另一个 class。但是原来的class是这样建的:

public class ClassName {

    private class InnerClass{
        private InnerClass(){
            //do stuff
        }
    }

    public ClassName(){
        //do stuff
    }
}

因此以下内容不起作用,因为 InnerClass 是私有的,因此不可见:

import java.io.Serializable;

public class ClassTwo extends ClassName implements Serializable{

    private class InnerClass extends ClassName.InnerClass implements Serializable {
        private InnerClass(){
            super();
        }
    }

    public ClassTwo(){
        super();
    }
}

有没有办法在不改变原来的class的情况下将Serializable实现成ClassName

如果您可以 read/write 访问您想要序列化的所有插槽,则可以创建一个适配器 class。

public class MyClassAdapter implements Serializable {
    private MyClass instance;
    ...
}

然后在序列化前将实例包装在这个适配器class中,并在反序列化后提取它。

如果您没有 read/write 访问插槽的权限,这可能是一个很好的理由,序列化您不拥有的数据是个坏主意。