java - 私有(private)内部类的继承

标签 java class inheritance private

我想在类中实现 Serialized,但不允许我修改它。我的想法是创建另一个继承另一个类的类。但原来的类是这样构建的:

public class ClassName {

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

    public ClassName(){
        //do stuff
    }
}

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

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

有没有一种方法可以在不更改原始类的情况下将 Serialized 实现到 ClassName 中?

最佳答案

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

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

然后在序列化之前将实例包装在这个适配器类中,并在反序列化之后将其提取出来。

如果您没有对插槽的读/写访问权限,这可能是有充分理由的,并且序列化您不拥有的数据是一个坏主意。

关于java - 私有(private)内部类的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47660587/

相关文章:

java - 你如何更新 Maven 管理的依赖项?

c++ - 为什么我的析构函数只被调用一次而不是在 delete(a) 调用中?

java - 使用 Jsoup 和 Java 选择 div 类标签

Python - 使用基类方法更新子属性

asp.net - 我们可以在 c# windows 应用程序中从一个项目继承一个类到另一个项目吗

c++ - 如何从模板化基础中消除多个继承的 typedef 的歧义?

java - Android 应用程序的标准 Git 子模块文件夹结构是什么?

Java:Socket关闭连接和ObjectInputStream

java - HangMan 游戏 - 输入所需单词后游戏直接结束

java - eclipse中相对文件名路径冲突