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 的程序集下。