私有内部类的继承

时间:2017-12-05 18:42:31

标签: java class inheritance private

我想将Serializable实现为一个类,但我不允许修改它。我的想法是创建另一个继承自其他类的类。但原始类是这样构建的:

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

有没有办法在不更改原始类的情况下将Serializable实现到ClassName

1 个答案:

答案 0 :(得分:1)

如果您对所有要序列化的插槽具有读/写访问权限,则可以创建适配器类。

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

然后在序列化之前将实例包装在此适配器类中,并在反序列化后将其解压缩。

如果您没有对插槽的读/写权限,那么可能是一个很好的理由,并且序列化您不拥有的数据是一个坏主意。