Javaシリアルは何ですか?あなたはシリアル化する必要があるときは、知っていますか?

Javaシリアルは何ですか?あなたはシリアル化する必要があるときは、知っていますか?


ad98756e-dab0-4707-a5f8-b860701d2ad9


Javaのシリアライズとは何ですか?あなたはどのような状況下でシリアライズする必要がありますか?

シリアル化:プロセスはバイトのストリームにJavaオブジェクトに変換します。

デシリアライズ:Javaオブジェクトへのバイト転送プロセス。

Javaオブジェクトは、ファイルにネットワークまたは永続ストレージを介して送信する必要がある場合は、Javaオブジェクトのシリアル化を処理する必要があります。

実現シーケンス:クラスはSerializableインタフェースを実装し、このインタフェースは、のメソッドを実装する必要はありません。このクラスのJVMのオブジェクトをシリアル化することができます伝えるためにSerializableを実装します。

注意事項:

  • クラスは、サブクラスがシリアライズすることができる、シリアライズすることができます

  • メンバ変数staticとして宣言し、一過性とシリアライズすることはできません。静的メンバ変数はクラスレベルの属性を記述している、一過性の一時的なデータ表現

  • シリアライズされたオブジェクトをデシリアライズして順次読取り一貫性

具体的な使用

パッケージconstxiong.interview。 
輸入java.io.FileInputStream;輸入java.io.FileOutputStreamは、輸入にjava.io.IOException;輸入java.io.ObjectInputStream;輸入java.io.ObjectOutputStreamの、輸入したjava.io.Serializable; 
/ ** 
 *测试序列化、反序列化
 * @author ConstXio​​ng 
 * @date 2019年6月17日午前9時31分22秒
 * / publicクラスTestSerializableが実装シリアライズ{  
	プライベート静的最終長いのserialVersionUID = 5887391604554532906L。	
	プライベートint型のID。	
	プライベート文字列名; 
	公共TestSerializable(int型のID、文字列名){this.id = ID。this.name =名前; 
	}	 
	@Override 
	パブリック文字列のtoString(){リターン"TestSerializable [ID =" + ID + "NAME =" +名+ "]"。
	@SuppressWarnings( "リソース")パブリック静的な無効メイン(文字列[]引数)にIOException、ClassNotFoundExceptionが{//序列化スロー
		たObjectOutputStream OOS =新しいObjectOutputStreamの(新しいたFileOutputStream( "TestSerializable.objは")); 
		oos.writeObject( "测试序列化"); 
		oos.writeObject(618)。
		TestSerializableテスト=新しいTestSerializable(1、 "ConstXio​​ng")。
		oos.writeObject(テスト)。		
		//反序列化
		するObjectInputStream OIS =新しいObjectInputStreamの(新しいFileInputStreamを( "TestSerializable.obj")); 
		System.out.println((文字列)ois.readObject())。
		System.out.println((整数)ois.readObject())。
		System.out.println((TestSerializable)ois.readObject())。
	} 
 
}

印刷結果:

テストシーケンス
618 
TestSerializable [= 1つのID、名前= ConstXio​​ng]

この記事のように、あなたが注目を指すように好きな作者を指すことができ、毎日のJava関連の記事を共有することになります!

~~ああ私に集中することを忘れないでください、時には利益を発表します、など面接の質問の統合、学習教材、ソースコードを含みます


おすすめ

転載: blog.51cto.com/14456091/2433437
おすすめ