我正在浏览这个网站上关于外化的文章,我在外化部分的限制中找到了以下段落。
如您所知,在序列化实现 Externalizable 接口的对象时,将调用默认的公共无参数构造函数。因此,Java 中的内部类无法实现 Externalizable 接口,因为 Java 中的内部类的所有构造函数都将始终接受封闭类的实例作为前置参数,因此您不能使用无参数构造函数一个内部类。内部类只需实现 Serializable 接口即可实现对象序列化。
我对此进行了测试,结果证明这是无效的。内部类可以没有参数构造函数,也可以实现Externalizable
接口。甚至在本地课程中尝试过。工作正常。
public class ExternalizeDemo {
class InnerClass implements Externalizable{
public InnerClass() {
//default no-arg inner class constructor
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
//logic to save object state
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
//logic to retrieve object state
}
}
public void localClassTest(){
class LocalClass implements Externalizable{
public LocalClass(){
//default no-arg local class constructor
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
//logic to save object state
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
//logic to retrieve object state
}
}
}
}
所以要么我遗漏了一些观点,要么文章段落不再有效(我使用的是 Java 7)。那么是哪一个呢。任何建议表示赞赏。