【发布时间】:2018-05-19 12:36:42
【问题描述】:
我想在一个类中实现 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?
【问题讨论】:
-
如果您对要序列化的所有插槽具有读/写访问权限,则可以创建一个包含
ClassName的适配器类。如果您没有读/写访问权限,那么子类化无论如何都不会起作用。 -
Slivio 基本上是正确的,我认为。如果您可以访问
InnerClass中的 getter 和 setter 来重建类的实例,那么您可以使用某种包装器来完成。如果没有,那就有反思。两者都不是完全推荐的。private表示您不应该能够直接继承或访问。 -
@Silvio 我认为您应该写下该评论作为答案。没有人会在 cmets 中看到它!
标签: java class inheritance private