私有内部的继承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 访问插槽的权限,这可能是一个很好的理由,序列化您不拥有的数据是个坏主意。
我想把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 访问插槽的权限,这可能是一个很好的理由,序列化您不拥有的数据是个坏主意。