zoukankan      html  css  js  c++  java
  • public interface Serializable?标记/标签接口

    Serializable接口是一个标记接口。

    什么是标记接口?

    标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。

    举个例子,标记接口就是一个产品的log,log显示了这个产品的一些信息,而对使用产品的人而言,其无关紧要。

    --------------------------

    为什么要实现这个接口呢?

    序列化就是变成二进制流,比如云计算,RPC,Hadoop,特别是Hadoop完全就是分布式环境,那么就要涉及到对象要在网络中传输,里面的全是二进制流,因此对象需要变成二进制流能够在介质中进行传输,这个过程就是序列化。

    实现了这个接口后,这个接口都做了什么?

    告诉JVM,这个对象可以被实例化,因为它实现了Serializable这个log接口。所以当此对象需要被转换为二进制流进行传输的时候,JVM在确认实现了Serializable接口后会提供默认的序列化机制将其序列化,以便进行介质运输。

    ---------------------------

    序列化是指将Java对象保存为二进制字节码的过程。

    反序列化将二进制字节码重新转成Java对象的过程。

    序列化过程中代码流程

    https://blog.csdn.net/weixin_39723544/article/details/80527550

    --------------------------

    希望对象的某些属性不参与序列化应该怎么处理?

    对象序列化之后,如果类的属性发生了增减那么反序列化时会有什么影响呢?

    如果父类没有实现java.io.Serializable接口,子类实现了此接口,那么父类中的属性能被序列化吗?

    serialVersionUID属性是做什么用的?必须申明此属性吗?如果不申明此属性会有什么影响?如果此属性的值发生了变化会有什么影响? 能干预对象的序列化与反序列化过程吗?

    (serialVersionUID是用来进行类的版本一致性校验的,如果从其他环境中传入的二进制类对象的serialVersionUID和本地要转换的类的serialVersionUID不一致,则JVM认为此类的版本不一致,将不允许进行转换并报InvalidCastException异常。当然如果不写,JVM会自己生成一个serialVersionUID,但不同JVM生成规则是不同的,因此一定要自己手动写值)

    JDK1.8 java.io.Serializable接口详解_王同林的博客-CSDN博客

  • 相关阅读:
    【FastJSON】使用JSON.toJSONString()-解决FastJson中“$ref 循环引用”的问题
    格林威治时间(GTM)转北京时间
    @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区别
    Net操作Excel(终极方法NPOI)
    10款.net 图形插件
    23种设计模式
    asp.net页面关闭的时候如何触发事件?
    IIS HTTP 错误 404.17
    Win10 Sql2008R2 在关闭【0x80041033】
    国内外前端(js)开发框架对比
  • 原文地址:https://www.cnblogs.com/YsirSun/p/14806557.html
Copyright © 2011-2022 走看看