Java 序列化问题

标签 java serialization

当我序列化抽象类时,继承的子类是否也会被序列化? 这是否包括抽象类及其子类的成员?

public abstract class RootClass implements Serializable{
 Object data;
}

public class SubClassA extends RootClass{
 Object dataA;
}

public class SubClassB extends RootClass{
 Object dataB;
}

现在,当我实例化类 SubClassA 和 SubClassB 时,我将序列化这些实例,这是可能的吗?

它会包含子类和根类的成员吗?

最佳答案

不确定我是否理解问题。无论如何,我会尽力回答。

当你声明一个抽象类Serializable时,这个接口(interface)也被子类继承,所以它们被认为是Serializable的,也必须使其成为可序列化的(如果你什么都不做,将会应用默认的序列化机制,这可能或可能不起作用)。

您只能序列化对象实例,而不是类。

默认序列化也会序列化父类的字段,但前提是该父类也是可序列化的。如果不是,则父状态未序列化。

如果您序列化抽象类的子类的对象,并且抽象类是可序列化的,那么该抽象父类中的所有字段也将被序列化(通常的异常(exception)情况适用,例如 transient 或静态字段)。

关于Java 序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4030047/

相关文章:

java - Parcelable 在 Intent putExtra 上写入可序列化对象时遇到 IOException

java - 带参数的 Spring JdbcTemplate 返回空列表

java - JSF 托管 bean 在 Tomcat 部署期间导致 java.io.NotSerializableException

java - 单击时如何更改 JButton 上的图像?

java - 我需要明确关闭连接吗?

javascript - java POST 415(不支持的媒体类型)

ios - 可靠地按顺序发送 AFNetworking 请求

java - 当只有子类实现可序列化时,序列化如何工作

java二进制文件操作

c# - 使用 JavaScriptSerializer 和自定义 JavaScriptConverter 序列化和反序列化 Dictionary<int, object>