ホームページ Java &#&チュートリアル Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現するにはどうすればよいですか?

Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現するにはどうすればよいですか?

Aug 02, 2023 pm 02:37 PM
- java - 連載 - デシリアライズ

Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現するにはどうすればよいですか?

はじめに:
Java 開発では、オブジェクトの永続化はデータの長期保存を実現する重要な方法です。シリアル化と逆シリアル化は、Java でオブジェクトの永続性を実現するために一般的に使用される方法の 1 つです。この記事では、シリアル化と逆シリアル化の概念と、Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現する方法を紹介します。

1. シリアル化と逆シリアル化とは何ですか?
シリアル化は、ネットワーク送信やディスクへの保存などの操作中にオブジェクトをコピーして送信できるように、オブジェクトをバイト ストリームに変換するプロセスです。逆シリアル化は、バイト ストリームをオブジェクトに再変換し、オブジェクトの状態とデータを復元するプロセスです。 Java では、オブジェクトのシリアル化と逆シリアル化は、Serializable インターフェイスを実装することによって実現されます。

2. シリアル化の実装メソッド
Java は、バイト ストリーム ベースのシリアル化と文字ストリーム ベースのシリアル化という 2 つの主要なシリアル化メソッドを提供します。

1. バイト ストリームに基づくシリアル化
バイト ストリームに基づくシリアル化は、ObjectOutputStream クラスと ObjectInputStream クラスを通じて実装できます。以下は、バイト ストリーム ベースのアプローチを使用してオブジェクトをシリアル化および逆シリアル化する方法を示すサンプル コードです。

import java.io.*;

public class ByteStreamSerializationDemo {
    public static void main(String[] args) {
        // 将对象序列化为字节流
        try {
            // 创建一个待序列化的对象
            Person person = new Person("Tom", 30);
            
            // 创建一个输出流
            FileOutputStream fileOutputStream = new FileOutputStream("person.obj");
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
            
            // 将对象写入输出流
            objectOutputStream.writeObject(person);
            
            // 关闭输出流
            objectOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 将字节流反序列化为对象
        try {
            // 创建一个输入流
            FileInputStream fileInputStream = new FileInputStream("person.obj");
            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
            
            // 读取对象数据
            Person person = (Person) objectInputStream.readObject();
            
            // 打印对象数据
            System.out.println(person.getName());   // 输出:Tom
            System.out.println(person.getAge());    // 输出:30
            
            // 关闭输入流
            objectInputStream.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

class Person implements Serializable {
    private String name;
    private int age;
    
    // 构造方法、getter和setter省略
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
ログイン後にコピー

上記のコードでは、まずシリアル化する Person オブジェクトを作成し、次に FileOutputStream クラスと ObjectOutputStream クラスを通じてオブジェクトをバイト ストリームにシリアル化し、ファイルに書き込みます。次に、FileInputStream クラスと ObjectInputStream クラスを通じてファイル内のバイト ストリームをオブジェクトに逆シリアル化し、最後にオブジェクトの属性値を出力します。

2. 文字ストリームベースのシリアル化
文字ストリームベースのシリアル化は、ObjectWriter クラスと ObjectReader クラスを通じて実装できます。

import java.io.*;

public class CharacterStreamSerializationDemo {
    public static void main(String[] args) {
        // 将对象序列化为字符流
        try {
            // 创建一个待序列化的对象
            Person person = new Person("Tom", 30);
            
            // 创建一个Writer
            FileWriter fileWriter = new FileWriter("person.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
            ObjectWriter objectWriter = new ObjectWriter(bufferedWriter);
            
            // 将对象写入字符流
            objectWriter.writeObject(person);
            
            // 关闭字符流
            objectWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 将字符流反序列化为对象
        try {
            // 创建一个Reader
            FileReader fileReader = new FileReader("person.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            ObjectReader objectReader = new ObjectReader(bufferedReader);
            
            // 读取对象数据
            Person person = (Person) objectReader.readObject();
            
            // 打印对象数据
            System.out.println(person.getName());   // 输出:Tom
            System.out.println(person.getAge());    // 输出:30
            
            // 关闭字符流
            objectReader.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

class Person implements Serializable {
    private String name;
    private int age;
    
    // 构造方法、getter和setter省略
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
ログイン後にコピー

上記のコードでは、FileWriter、BufferedWriter、および ObjectWriter クラスを通じてオブジェクトを文字ストリームにシリアル化し、ファイルに書き込みます。次に、ファイル内の文字ストリームは、FileReader、BufferedReader、ObjectReader クラスを通じてオブジェクトに逆シリアル化され、最終的にオブジェクトの属性値を出力できます。

3. 注意事項
Java でシリアル化と逆シリアル化を使用してオブジェクトの永続化を実現する場合、次の点に注意する必要があります:

1. オブジェクトのクラスは次のとおりである必要があります。 Serializable インターフェイスが実装されていないと、シリアル化と逆シリアル化を実行できません。
2. シリアル化されたクラス内のすべての参照オブジェクトもシリアル化可能である必要があります。
3. シリアル化および逆シリアル化されたクラスのフィールドは、カスタム クラス、基本データ型、コレクション型など、任意の型にすることができます。
4. シリアル化および逆シリアル化されたクラスのフィールドは一時的に変更される可能性があり、永続化されません。

結論:
この記事の導入部を通じて、シリアル化と逆シリアル化とは何かを学び、Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現する方法をコード例を通じて示しました。実際の開発では、シリアライズの仕様や注意事項に従うことで、ニーズに応じて適切なシリアライズ方法を選択することで、オブジェクトの長期保存や送信を実現できます。

以上がJava でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java を使用して Cassandra ベースの位置情報データ アプリケーションを開発する方法 Java を使用して Cassandra ベースの位置情報データ アプリケーションを開発する方法 Sep 20, 2023 pm 06:19 PM

Java を使用して Cassandra ベースの地理位置データ アプリケーションを開発する方法 地理位置データ アプリケーションは、地図ナビゲーション、位置共有、位置推奨など、現代社会で広く使用されています。 Cassandra は、大量のデータを処理できる分散型の拡張性の高い NoSQL データベースであり、特に地理的位置データの保存とクエリに適しています。この記事では、Java を使用して Cassandra ベースの地理的位置データ アプリケーションを開発する方法を紹介し、具体的なコード例を示します。 1. 環境

JavaでLinkedList.removeFirst()メソッドを使用してリンクリストの先頭から要素を削除するにはどうすればよいですか? JavaでLinkedList.removeFirst()メソッドを使用してリンクリストの先頭から要素を削除するにはどうすればよいですか? Nov 18, 2023 am 11:10 AM

Java の LinkedList クラスは、リンク リストのデータ構造を実装するクラスで、リンク リストを操作するための便利なメソッドを多数提供します。このうち、removeFirst()メソッドを使用すると、リンクリストの先頭から要素を削除できます。 LinkedList.removeFirst()メソッドの使い方と具体的なコード例を紹介します。 LinkedList.removeFirst() メソッドを使用する前に、まず LinkedList を作成する必要があります。

Linux に Kafka をすばやくインストールして使い始める: ステップバイステップ ガイド Linux に Kafka をすばやくインストールして使い始める: ステップバイステップ ガイド Jan 31, 2024 pm 09:26 PM

Linux 環境に Kafka をインストールするための詳細な手順 1. 前提条件のオペレーティング システム: Linux (Ubuntu または CentOS を推奨) Java: JDK8 以降 ZooKeeper: バージョン 3.4 以降 Kafka: 最新の安定バージョン 2. Javasudoapt-getupdatesudoapt-getinstalldefault-jdk3 をインストールします。 ZooKeeperwg をインストールする

Redis と Java を使用した分散カウンターの実装: 高い同時実行性を実現する方法 Redis と Java を使用した分散カウンターの実装: 高い同時実行性を実現する方法 Jul 29, 2023 am 08:21 AM

Redis と Java を使用した分散カウンターの実装: 高い同時実行性を実現する方法 はじめに: 最新のインターネット アプリケーション開発では、高い同時実行性が共通の課題です。複数のユーザーが同時にアプリケーションにアクセスする場合、データの損失や混乱を避けるために、アプリケーションは各ユーザーのリクエストを正しく処理および追跡できる必要があります。この記事では、Redis と Java を使用して分散カウンターを実装し、同時実行性の高いデータ追跡と管理を実現する方法について説明します。 1. Redis の概要 Redis はオープンソースのベースです

Linux スクリプト操作を使用して Java でリモート ログインを実装する方法 Linux スクリプト操作を使用して Java でリモート ログインを実装する方法 Oct 05, 2023 am 08:42 AM

Linux スクリプト操作を使用して Java でリモート ログインを実装する方法の概要: リモート ログインは、1 台のコンピューターを使用してネットワーク環境内の他のコンピューターにログインして操作を実行する方法です。 Linux システムでは、通常、リモート ログインに SSH プロトコルを使用します。この記事では、Java で Linux スクリプトを呼び出してリモート ログイン操作を実装する方法と、具体的なコード例を紹介します。ステップ 1: Linux スクリプト コードを作成する まず、渡すための Linux スクリプトを作成する必要があります。

Java API 開発におけるストレージ管理に Dropbox を使用する Java API 開発におけるストレージ管理に Dropbox を使用する Jun 18, 2023 pm 01:21 PM

Java API 開発におけるストレージ管理に Dropbox を使用する クラウド コンピューティングの普及に伴い、ますます多くのアプリケーションがデータをクラウドに保存し、このデータを簡単に読み書き、管理できるようにする必要があります。最も人気のあるクラウド ストレージ サービスの 1 つとして、Dropbox は最も豊富で柔軟な API を提供しており、開発者は Dropbox のストレージ管理機能をアプリケーションに簡単に統合できます。この記事では、JavaAPI開発におけるDrの使い方を紹介します。

Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現するにはどうすればよいですか? Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現するにはどうすればよいですか? Aug 02, 2023 pm 02:37 PM

Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現するにはどうすればよいですか?はじめに: Java 開発では、オブジェクトの永続化はデータの長期保存を実現する重要な方法です。シリアル化と逆シリアル化は、Java でオブジェクトの永続性を実現するために一般的に使用される方法の 1 つです。この記事では、シリアル化と逆シリアル化の概念と、Java でシリアル化と逆シリアル化を使用してオブジェクトの永続性を実現する方法を紹介します。 1. シリアル化と逆シリアル化とは何ですか?シリアル化は、オブジェクトをネットワーク経由で送信または保存できるように、オブジェクトをバイト ストリームに変換するプロセスです。

Java のデータ形式エラー - java.text.ParseException Java のデータ形式エラー - java.text.ParseException Jun 25, 2023 pm 03:07 PM

Java は高級プログラミング言語として、エンタープライズ レベルの開発やモバイル アプリケーション開発で広く使用されています。 JAVA では、データの処理は非常に重要なタスクです。多くの場合、プログラムの正確性と操作効率を確保するために、データをフォーマットする必要があります。ただし、このプロセス中にデータ形式エラーが発生する可能性があり、これらのエラーによりプログラムが正しく実行されなくなる可能性があります。 JAVA では、java.text.ParseException は一般的なフォーマット エラーであり、

See all articles