侧边栏壁纸
  • 累计撰写 56 篇文章
  • 累计创建 59 个标签
  • 累计收到 7 条评论

什么时候需要实现implements Serializable

时间这孩子很诚实
2024-03-11 / 3 评论 / 0 点赞 / 620 阅读 / 565 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-03-11,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

我们都有个惯性思维,就是实体类需要 implements Serializable 以序列化,序列化有两个作用:1、序列化就是将对象属性转变为二进制数据。2、在网络上进行传输。但是我发现有个项目中实体类并没有 implements Serializable,但是依然可以保存数据库,依然可以在网络上传输。于是在网上开始寻找结果,但是看了多个解答依然不能形成知识闭环。有的说是保存对象数据的,不需要实现序列化接口。有的说以非rpc调用的可以不实现序列化接口。貌似没看到我想要的。

直到我把每个属性类型点看看了一遍,破案了。因为Java大部分的数据类型都已经实现了可序列化接口。

所以 要想存储到数据库必须实现序列化接口、要想网络传输必须实现序列化接口 ,这句话是对的,只是有的时候我们没有在类上看到 implements Serializable 也可以完成这两类操作,是因为 这个类的所有属性类型都是 Java的基本类型+引用类型。(基本类型有对应的包装类)这些类型都在内部实现了已经实现了 可序列化接口。在所有属性都是Java已经实现好可序列化的情况下类上可以不加 implements Serializable。

class Person {

  String name; //String类型已经实现好了可序列化接口
   Integer age;//Integer类型已经实现好了可序列化接口
   List <Object> ticket; //List也实现了可序列化接口  
   。。。
}

好,那么什么情况下就必须要加implements Serializable?才能实现存数据库+网络传输?

答:在一个类拥有自定义类型的情况下。

例如

class Person implements Serializable{

   String name;
   
   Pet pet; //宠物
}

如果这样定义Person类,Pet属性是组合的其他定义类。那么就必须在类上声名implements Serializable才可以实现 数据存储+网络传输。

0

评论区