到底什么时候需要 implements Serializable ,实体类必须 implements Serializable 才可以网络传输?写数据库吗?

 声明:转载自博客园的 Timeouting,为了方便自己复习,分享知识,转载到csdn

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

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

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

class Person {

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

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

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

  例如

class Person implements Serializable{

    String name;
    
    Pet pet; //宠物
}

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

声明:转载自博客园的 Timeouting,为了方便自己复习,分享知识,转载到csdn,如果原作者不许转载,联系删除

猜你喜欢

转载自blog.csdn.net/m0_60817176/article/details/129216780