Java中的外化是什么? 界面、功能和示例

已发表: 2021-02-04

回答什么是外部化 在 java中,我们可以说它是一种通用机制,用于自定义序列化。 它与java序列化效率不高的主要方面一起使用,因此当存在包含多个属性和属性的膨胀对象时使用外部自定义参数。

目录

什么是序列化和外部化?

序列化——是将对象的数据组合成字节流的机制,该过程主要在RMI、JMS、JPA类型的技术中实现。 另一种类型由一种反转序列化功能和过程的机制组成,称为反序列化。 顾名思义,序列化的作用就是对java中存在的对象进行序列化。

外部化——它被定义为用于定制序列化机制的机制。 英国媒体报道的软件速度不快且响应速度不快。 它产生了对一种高效且响应迅速的良好机制的需求,以定制整个过程。

在序列化中,java编程机器响应写入和读取对象的过程。 这是一个经常使用的案例场景,因为程序员不必担心序列化过程。 在这种情况下,默认的工作序列化不打算保存重要的凭据,如登录 ID 和密码。

但是,如果程序员发现需要保护相同的凭证,则外部化证明其目的是在序列化期间完全控制数据的读写对象的数据处理。

结帐:流行的 Java 框架

可外部化接口

该接口是在序列化和反序列化过程中需要适度读写对象时实现的。 因此,需要一个带有java.io.externalisable接口的对象类,帮助用户和程序员通过在 writeExternal() 方法中写入和在 readExternal()方法中读取对象来实现他们对对象状态的自定义代码。

为了更好的构思,让我们了解这两种方法

readExternal()在对象接受输入时起作用。 通过对对象、字符串和数组调用 write Object 方法,通过data Input的方法将内容恢复到原始上下文

writeExternal()在对象接受输入时起作用,数据输出的方法通过调用对象、字符串和数组的 read Object 方法来保存内容。

特征

外部化通过绕过读取外部写入外部方法来帮助实现对应用程序的逻辑控制

外部化被证明是程序员的一种有效方法,因为他们能够用自己的良心和逻辑创建代码,以消除 java 对象外部化过程中的变量。

外部化方法可以完全手动控制实现方法,也可以隐含对象序列化和继承。

另请阅读:Java 面试问题

例子

// 界面

导入java.io.*;

类汽车实现外部化{

静态整数;

字符串名称;

整数年;

公共汽车()

{

System.out.println(“调用默认构造函数”);

}

汽车(字符串 n,int y)

{

这个.name = n;

this.year = y;

年龄 = 10;

}

@覆盖

公共无效写外部(对象输出)

抛出 IOException

{

out.writeObject(name);

out.writeInt(年龄);

out.writeInt(年);

}

@覆盖

公共无效读取外部(对象输入)

抛出 IOException,ClassNotFoundException

{

name = (String)in.readObject();

年 = in.readInt();

年龄 = in.readInt();

}

@Override public String toString()

{

返回(“名称:” + 名称 + “\n”

+ “年份:” + 年份 + “\n”

+ “年龄:” + 年龄);

}

}

公共类外部示例 {

公共静态无效主要(字符串 [] 参数)

{

Car car = new Car(“Shiney”, 1995);

汽车newcar = null;

//序列化汽车

尝试 {

文件输出流

= 新文件输出流(“gfg.txt”);

ObjectOutputStream 所以

= 新的 ObjectOutputStream(fo);

so.writeObject(汽车);

so.flush();

}

捕获(异常 e){

System.out.println(e);

}

//反序列化汽车

尝试 {

文件输入流

= 新文件输入流(“gfg.txt”);

对象输入流

= 新的 ObjectInputStream(fi);

newcar = (汽车)si.readObject();

}

捕获(异常 e){

System.out.println(e);

}

System.out.println(“原车为:\n” + car);

System.out.println(“新车是:\n” + newcar);

}

}

输出:

调用默认构造函数

原车是:

姓名:希尼

年份:1995

年龄:10

新车是:

姓名:希尼

年份:1995

年龄:10

这个例子是一个经典的例子,描述了当一个可外部化的对象被重新创建时,实例被公共无参数构造函数触发,这往往会调用readExternal方法。 因此,在可外部化接口的帮助下,可以完全控制 java 类的类比。

因此,在使用 externalize 时,所有字段状态都必须与写入时的顺序完全相同。

另请阅读: Java 项目理念和主题

从世界顶级大学在线学习软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

因此,当被问及java 中的外部化是什么时,我们可以说它很重要,因为它必须提供自定义序列化,并且可以完全控制自定义序列化以及实现方法。 readExternal 和 writeExternal 方法需要被类覆盖。 它提供了比序列化更好的性能。

与 upGrad 联系,通过关于全栈开发的 Executive PG Program 课程更好、更深入地了解 java,以提高学习曲线,您可以通过 10,000 卢比开始学习并访问在线讲座。

Java中的接口是什么?

接口是java中没有任何实现的类型之一,它只是一组方法签名。 无法创建此接口。 这个事实背后的原因是这些接口只是方法签名的集合。 一旦我们创建了一个接口,我们就不能继续在其中添加新方法。 例如,我们不能在 java.Aspect 接口中添加一个方法来帮助我们从类外部修改类行为。 因为这违背了面向对象的编程原则。 实际上,接口只不过是 java 注释扩展。 我们应该使用接口来保持我们的代码简洁。

Java中的外部化是什么?

外化是对象使其状态可变的能力。 在 Singleton、Factory 和 Prototype 等设计模式中使用外部化来实现依赖倒置原则和接口隔离原则。 外部化不是 Java 的内置特性,但可以将该特性添加到类中。 外化是在 Java 中将对象转换为字符流的过程。 它是一种用于将对象以二进制格式存储在文件中的机制。 它用于将字符数据作为字节序列存储在文件中。 可以在 Java 程序的后续执行中读取数据。

java编程语言的特点是什么?

Java 是 Sun Microsystems 于 1995 年首次发布的一种编程语言和计算平台。从那时起已经发布了多个更新,最新版本是 Java 11。Java 旨在运行在任何可以支持 Java 虚拟机的平台上,因此它也是一个编程平台。 它可以在只有浏览器的环境中运行,但最常用于各种版本的 Java 虚拟机 (JVM),在称为应用程序编程接口或 API 的程序集下。