Externalization in Java2025年3月29日 | 阅读 4 分钟 Java 中的 Externalization 用于自定义序列化机制。Java 序列化效率不高。当我们有包含大量属性和特性的臃肿对象时,将它们序列化是不好的。这时,Externalization 会更有效。 让我们在 Java 中了解一下序列化 Java 中的序列化是什么序列化是将对象的状态写入字节流的机制。序列化主要用于 Hibernate、RMI、JPA、EJB 和 JMS 等技术。与序列化过程相反的机制称为反序列化。这些过程是平台无关的,意味着我们可以在一个平台上序列化对象,并在其他平台上反序列化它们。 实现 Serializable 接口用于在 Java 中序列化对象。 阅读更多关于 Java 中的序列化和反序列化。 现在回到我们的主要话题,Java 中的 Externalization。 Java 中的 Externalization 是什么当我们在具有多个属性和特性的臃肿对象时,Java 序列化效率不高。这时,Externalization 就派上用场了。它允许我们自定义序列化。例如,如果我们为一个类实现了 Serialization 接口,我们可以使用 writeExternal() 方法进行 Externalization。当用户从他们的端重构一个 Externalization 对象时,对象的一个实例将使用 readExternal() 方法创建。 因此,Externalization 提供了自定义序列化,我们可以管理我们的对象流并决定在其中存储什么。 如果我们想序列化对象的一部分,Externalization 会很有用。我们可以只序列化对象中需要的字段。 Externalizable 接口我们需要实现 java.io.Externalizable 接口来在序列化和反序列化过程中控制读写。readExternal() 和 writeExternal() 方法是 Externalizable 接口的一部分。 让我们来了解一下这些方法 Externalizable 接口中的 readExternal() 方法 Externalizable 接口的对象使用 readExternal() 方法实现。它通过调用 DataInput 的方法来恢复原始数据类型的对象。对于对象、字符串和数组数据类型,它可以调用 readObject。 让我们了解如何实现 readExternal() 方法。 当我们向 readExternal() 方法传递一个对象时,它会接收对象输入。 对于原始数据类型,我们可以使用 readBoolean()、readByte()、readInt()、readLong() 方法。 对于 String、Arrays 或任何自定义类,我们可以使用 readObject() 方法。 它的用法如下 从上面的代码片段可以看出,readInt() 和 readObject() 方法用于反序列化 code、name、password 和 birthday 的值。 Externalizable 接口中的 writeExternal() 方法 Externalizable 接口的 writeExternal() 方法用于通过调用 dataOutput 的方法来保存原始值。对于对象、字符串和数组,调用 ObjectOutput 的 writeObject 方法。 让我们了解 writeExternal() 方法的实现 将对象的状态写入底层流应遵循以下规则 对于原始类型的值,使用 writeBoolean()、writeByte()、writeInt()、writeLong() 方法。 对于字符串、数组和自定义类,使用 writeObject() 方法。 考虑以下代码片段 从上面的代码片段可以看出,writeInt() 和 writeObject() 方法用于序列化 code、name、password 和 birthday 的值。 因此,我们可以看到如何使用 Java 中的 Externalization 来自定义序列化。 Java 中 Externalization 的示例我们可以使用 Externalization 将 Java 类保存到字节流中。它提供了对类持久化为字节流的完全控制。我们必须在需要 Externalization 的类中实现 Externalizable 接口并定义其方法,即 writeExternal() 和 readExternal()。 让我们看一个 Java 中 Externalization 的示例。 User.java JTPMain.java 输出 After De externalization username: JavaTpoint and age is:25 在上面的示例中,writeExternal() 方法保存的字段将作为字节流持久化,而其他字段将不会被 Externalization。因此,使用 Externalizable 接口,我们可以完全控制 Java 类的持久化。 让我们讨论一下序列化和 Externalization 之间的区别,以阐明两者的概念 序列化与 Externalization 的区别
|
java.text.CollationElementIterator 包含 setOffset() 方法。可以使用 CollationElementIterator 类将迭代器的光标设置为参数指定的索引。语法:public void setOffset(int newOffset) 参数:光标必须设置在该方法接受整数值的位置,...
阅读 2 分钟
在 Java 中,JSON(即 JavaScript Object Notation)在处理服务器端响应时起着非常重要的作用。在 Java 中,我们可以根据 JSON schema 来验证 JSON 文档。为了执行验证,我们使用 networknt JSON Schema 验证器库。使用此库的原因...
阅读 4 分钟
调和数是一个迷人的数学概念,在物理、工程和计算机科学等各个领域都有应用。在本节中,我们将探讨调和数是什么,它们的意义以及如何在 Java 中计算它们。我们还将提供带有输出的示例 Java 程序……
阅读 4 分钟
在数据库领域,视图是强大的工具,它们提供了一种简化和有组织的方法来访问和操作数据库中包含的数据。视图允许开发人员构建,为用户提供数据的自定义视图,而无需更改底层数据结构...
5 分钟阅读
工厂方法设计模式作为面向对象编程中的一种创建型模式,它提供了一个创建对象的接口,但将实例化哪个类的决定留给了具体子类。它是松耦合的模式,因为应用程序将不会……
7 分钟阅读
问题陈述:给定一个二进制矩阵(一个每个单元格仅包含数字 0 或 1 的网格),任务是确定从 0 单元格到 1 单元格所需的最小移动次数。...
7 分钟阅读
在 Java 编程中,null 的概念既基本又无处不在。它代表了引用类型值的缺失,并且是开发人员处理未初始化对象或数组情况的关键工具。理解 null 对于...至关重要。
阅读 3 分钟
在本节中,我们将讨论什么是全数数字及其版本,并创建 Java 程序来检查给定的数字是否为全数数字。全数数字程序经常在 Java 编码面试和学术界中被问到。全数数字:一个 10 位整数...
阅读 4 分钟
一组用于有效管理工作线程的组件的框架称为执行器框架。执行器 API 通过执行器将任务的执行与要执行的实际任务分离。执行器框架是一个实现...
阅读 8 分钟
在 Java 中,构造函数是在创建对象时调用的特殊方法。它们用于初始化对象状态并执行任何必要的设置。Java 构造函数的一个有趣特性是能够在其中调用另一个构造函数……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India