首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果java Serializable消失了,Externalizable也会消失吗?

如果java Serializable消失了,Externalizable也不会消失。

Java中的Serializable和Externalizable是用于实现对象的序列化和反序列化的接口。Serializable是Java提供的默认序列化机制,它将对象转换为字节流进行存储和传输。而Externalizable是Serializable的子接口,它允许开发人员对序列化过程进行更精细的控制。

如果Serializable消失了,意味着Java将不再支持默认的序列化机制,但Externalizable仍然存在。开发人员可以继续使用Externalizable接口来实现对象的序列化和反序列化,只是需要手动实现序列化和反序列化的逻辑。

Externalizable相对于Serializable具有更高的灵活性和性能,因为它允许开发人员选择性地序列化对象的某些字段,而不是全部字段。这对于需要定制化序列化过程的场景非常有用。

推荐的腾讯云相关产品:无

参考链接:

  • Java Serializable文档:https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html
  • Java Externalizable文档:https://docs.oracle.com/javase/8/docs/api/java/io/Externalizable.html
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

讲真,下次再也不敢随便改 serialVersionUID

背景知识 在展开本文的介绍之前,先来简单介绍一些和序列化有关的知识, SerializableExternalizable Java类通过实现 java.io.Serializable 接口以启用其序列化功能...Java中还提供Externalizable接口,可以实现它来提供序列化能力。...Externalizable继承自Serializable,该接口中定义两个抽象方法:writeExternal()与readExternal()。...我们随便找几个Java中实现序列化接口的类,如String、Integer等,我们可以发现一个细节,那就是这些类除了实现Serializable外,还定义一个serialVersionUID ?...我们都知道,Java对象是保存在JVM的堆内存中的,也就是说,如果JVM堆不存在,那么对象也就跟着消失。 而序列化提供一种方案,可以让你在即使JVM停机的情况下能把对象保存下来的方案。

4.6K42

讲真,下次打死我不敢随便改serialVersionUID

如果不设置怎么样?为什么《阿里巴巴Java开发手册》中有以下规定: ?...背景知识 在展开本文的介绍之前,先来简单介绍一些和序列化有关的知识, SerializableExternalizable Java类通过实现 java.io.Serializable 接口以启用其序列化功能...Java中还提供Externalizable接口,可以实现它来提供序列化能力。...Externalizable继承自Serializable,该接口中定义两个抽象方法:writeExternal()与readExternal()。...我们都知道,Java对象是保存在JVM的堆内存中的,也就是说,如果JVM堆不存在,那么对象也就跟着消失。 而序列化提供一种方案,可以让你在即使JVM停机的情况下能把对象保存下来的方案。

79510
  • Java对象的序列化(Serialization)和反序列化详解

    API来支持,其中包括以下接口和类: java.io.Serializable java.io.Externalizable ObjectOutput ObjectInput ObjectOutputStream...如果要序列化的类有父类,要想将在父类中定义过的变量序列化下来,那么父类应该实现java.io.Serialization接口。...下面是一个实现java.io.Serialization接口的类: package common.lang; import java.io.Serializable; import org.apache.commons.lang3...还提供另一个序列化接口java.io.Externalizable 为了了解Externalizable接口和Serializable接口的区别先来看代码,我们将上面的User1类改为实现java.io.Externalization...继承Serializable,该接口中定义两个抽象方法:writeExternal()与readExternal()。

    60031

    java transient关键字_浅谈Java序列化机制

    JDK提供下面两种方式实现序列化:  1、实现Serializable接口2、实现Externalizable  下面分别实例演示两种实现方式: 假设本文所有的序列化对象为User,其拥有下面属性:...允许我们自定义序列化规则,Externalizable接口初始化一次无参构造器,而Serializable不会  三、transient关键字和static成员变量  通过实现Externalizable...1、transient修饰的变量,即使使用private修饰会被序列化2、如果我们想private属性不被序列化,则可以使用Externalizable  static修饰的成员变量属于类全局属性,其值在...因为java拿编译器根据类信息自动生成一个id1和反序列化得到的id2进行比较,如果类有改动,id2和id1肯定不一致啦。  ...五、序列化、反序列化实现深度克隆  深度克隆即把引用类型的成员给克隆,基于上面例子,我们新增一个类Car,并且User拥有一个Car类型对象。

    41100

    小伙子,你真的搞懂 transient 关键字了吗?

    如果想加入我们的Java技术栈vip群和各位大牛一起讨论技术,那点击这个链接了解加入吧。 那么,到底静态变量能被序列化?废话少说,先动手测试下吧!...那是因为 User3 实现接口 Externalizable,而不是 Serializable。...在 Java 中有两种实现序列化的方式,SerializableExternalizable,可能大部分人只知道 Serializable 而不知道 Externalizable。...这两种序列化方式的区别是:实现 Serializable 接口是自动序列化的,实现 Externalizable 则需要手动序列化,通过 writeExternal 和 readExternal 方法手动进行...如果对你有帮助,那就转发分享一下吧!如果想加入我们的Java技术栈vip群和各位大牛一起讨论技术,那点击这个链接了解加入吧。

    40120

    SerializableExternalizable浅析

    本文主要要看看JDK中使用SerializableExternalizable接口来完成Java对象序列化,并给出部分属性序列化的几种方式,最终做出SerializableExternalizable...注:本文不讨论为什么不用第三方工具包完成序列化等~ 一、序列化Serializable 要实现Java对象的序列化, 只要将类实现SerializableExternalizable接口即可。...,无返回值的writeObject方法,如果有,其委托该方法进行对象序列化。...==>Book [name=Hello Java, isbn=ABC123456789, authors=null] 三、Externalizable vs Serializable Externalizable...【2】Serializable提供两种方式进行对象的序列化, 采用默认序列化方式,将非transatient和非static的属性进行序列化 编写readObject和writeObject完成部分属性的序列化

    52120

    Java反序列化源码深入追踪

    而使用Externalizable则是调用一个无参构造方法来实例化,原因如下: Externalizable序列化的过程:使用Externalizable序列化时,在进行反序列化的时候,重新实例化一个对象...其实,从该方法上面的那段注释我们可以了解到,如果反序列化类实现externalizable,则这里调用的就是权限为public的无参构造函数;否则如果反序列化类实现serializable,则这里调用的就是第一个没有实现...(model.serializable || model.externalizable)) {//如果一个类既没实现serializable没实现externalizable,则给该类的描述对象的成员变量...接口导致编程复杂度的增加,所以大部分时候都是采用实现 Serializable 接口方式来实现序列化。.../80578849  不通过构造函数能创建对象

    54420

    java 序列化 原理解析

    序列化相关文章: Java 序列化 之 Serializable Java 序列化之 Externalizable Java 序列化 之 单例模式。 阅读本文章之前,务必要阅读上面的三篇文章。...在这里String和 Enum 类型不实现 Serializable 可以序列化的,但String 类中还是实现 Serializable 接口,告诉大家,该类可以序列化的。...这里,我们可以看到,如果实现 Externalizable 接口,优先执行 Externalizable 接口的实现的方法,而默认的序列化方法不会执行。...这里解释上一篇文章中Java 序列化之 Externalizable 示例三 的原因。 writeExternalData 方法 实现 Externalizable 序列化接口 ?...我们平常在重写 writeObject() 方法的时候一般先调用 defaultWriteFields() 方法的,然后在写上其它特殊的序列化。

    1.1K90

    Java transient关键字使用小记

    1. transient的作用及使用方法 我们都知道一个对象只要实现Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供很多便利,我们可以不必关系具体序列化的过程...变量如果是用户自定义类变量,则该类需要实现Serializable接口。 3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。...第三点可能有些人很迷惑,因为发现在User类中的username字段前加上static关键字后,程序运行结果依然不变,即static类型的username读出来为“Alexia”,这不与第三点说的矛盾...思考下面的例子: import java.io.Externalizable;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream...我们知道在Java中,对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化

    84860

    Java transient关键字使用小记

    1. transient的作用及使用方法 我们都知道一个对象只要实现Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供很多便利,我们可以不必关系具体序列化的过程...变量如果是用户自定义类变量,则该类需要实现Serializable接口。 3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。...第三点可能有些人很迷惑,因为发现在User类中的username字段前加上static关键字后,程序运行结果依然不变,即static类型的username读出来为“Alexia”,这不与第三点说的矛盾...思考下面的例子: import java.io.Externalizable;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream...我们知道在Java中,对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化

    31620

    Java的 transient关键字

    ,本地序列化缓存适用)中被传输,这些信息对应的变量就可以加上transient关键字。...变量如果是用户自定义类变量,则该类需要实现Serializable接口。 3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。...第三点可能有些人很迷惑,因为发现在User类中的username字段前加上transient关键字后,程序运行结果依然不变,即static类型的username读出来为“Alexia”,这不与第三点说的矛盾...思考下面的例子: [java] view plaincopy import java.io.Externalizable;   import...我们知道在Java中,对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化

    43420

    Java transient关键字的理解

    短暂的; 转瞬即逝的; 临时的 n 临时旅客; 瞬变现象; 候鸟; 1. transient的作用及使用方法 我们都知道一个对象只要实现Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供很多便利...; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable;...变量如果是用户自定义类变量,则该类需要实现Serializable接口。 3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。...第三点可能有些人很迷惑,因为发现在User类中的username字段前加上static关键字后,程序运行结果依然不变,即static类型的username读出来为“Alexia”,这不与第三点说的矛盾...我们知道在Java中,对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化

    22410

    单例与序列化的那些事儿

    如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 但是,单例模式真的能够实现实例的唯一性?...答案是否定的,很多人都知道使用反射可以破坏单例模式,除了反射以外,使用序列化与反序列化同样破坏单例。 序列化对单例的破坏 首先来写一个单例的类: code 1 ?...isInstantiable:如果一个serializable/externalizable的类可以在运行时被实例化,那么该方法就返回true。...针对serializableexternalizable我会在其他文章中介绍。 desc.newInstance:该方法通过反射的方式调用无参构造方法新建一个对象。 所以。...hasReadResolveMethod:如果实现serializable 或者 externalizable接口的类中包含readResolve则返回true invokeReadResolve:通过反射的方式调用要被反序列化的类的

    69620

    transient关键字

    参考:Java transient关键字使用小记 java中的关键字transient,这篇文章你再也不发愁 Java基础学习总结——Java对象的序列化和反序列化 1、概述 给不需要序列化的属性前添加...发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象 3、序列化的两种方式 (1)实现Serializable接口 只要实现此接口,自动序列化处理...“Alexia”,这不与第三点说的矛盾?...需要重写writeExternal和readExternal方法,如果在方法中指定序列化的变量,那么这个变量必被序列化,不管此变量是否被transient修饰。...今天文章到此就结束,感谢您的阅读,Java架构师必看祝您升职加薪,年年好运。

    43510

    Java程序员必备:序列化全方位解析

    public interface Serializable {} Externalizable 接口 Externalizable继承Serializable接口,还定义两个抽象方法:writeExternal...writeObject0(obj, false); ......} writeObject0 主要实现是对象的不同类型,调用不同的方法写入序列化数据,这里面如果对象实现Serializable接口...所以如果某个序列化类的成员变量是对象类型,则该对象类型的类必须实现序列化 ? 子类实现Serializable,父类没有实现Serializable接口的话,父类不会被序列化。...在 Java 中,SerializableExternalizable 有什么区别 serialVersionUID有什么用?...3.在Java中,SerializableExternalizable 有什么区别 Externalizable继承Serializable,给我们提供 writeExternal() 和 readExternal

    1.1K21
    领券