You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非Serializable接口类型字段赋值Serializable实现类,序列化问题咨询

Java序列化常见问题解答

问题1:若类的字段为非Serializable接口类型,但其实际赋值的是Serializable实现类实例,该字段能否被序列化?

能。Java序列化机制判断对象是否可序列化,依据的是运行时实际对象的类型,而非声明时的接口类型。只要字段实际指向的对象实现了Serializable接口,就能正常被序列化。反之,如果实际对象没实现Serializable,序列化时会抛出NotSerializableException。

问题2:若序列化Parent类实例时,field3赋值为MyImplementation类实例,那么field4和field5是否会被一同序列化?

会。因为MyImplementation实现了Serializable接口,它的所有非static、非transient字段(包括field4和field5)都会被自动序列化——不管它是以MyInterface接口类型的引用被持有,还是以自身类类型被持有。

代码示例

public class Parent implements Serializable {
    public String field1;
    public String field2;
    public MyInterface field3;
}

public interface MyInterface {
    String getText();
}

public class MyImplementation implements MyInterface, Serializable {
    private static final long serialVersionUID = 12345464324324L;
    public int field4;
    public int field5;

    @Override
    public String getText() {
        return "foo";
    }
}

内容的提问来源于stack exchange,提问作者Leszek Pachura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:50:17