記事のディレクトリを読みます
まず、シリアライズとデシリアライズするものである
第二に、中にシリアライズとデシリアライズ大きな役割
シリアライズとデシリアライズを達成するための3つの前提条件
シリアライズとデシリアライズを実装する方法第四に、
V.コードの実装
上の注意
Javaの直列(シリアル):バイトのJavaオブジェクトのシーケンスを変換します
Javaの直列化復元(アンチシリアライズ):メモリのプロセスにおけるバイトのシーケンスにより、新しいJavaオブジェクト。
第三に、シリアライズとデシリアライズの前提条件を達成するために
成功するためには、クラスのオブジェクトのシリアル化は、2つの条件が満たされる必要があります。
1. java.io.Serializableを実装する
クラス2のすべての属性がシリアライズ可能である必要があります。プロパティは、シリアライズされていない場合、プロパティは(過渡マークする必要があり、過渡)。
方法を含み、シリアル化されたオブジェクトをデシリアライズするObjectInputStream ObjectOutputStreamのクラスとハイレベル・データ・ストリーム、。
1.ObjectOutputStreamクラス:のwriteObject(オブジェクトx)のための方法使用してシリアル化。
公共の 最終 ボイドのwriteObject(オブジェクトX)がスロー IOExceptionが
2.ObjectInputStreamカテゴリ:オブジェクトのreadObject()メソッドを使用してデシリアライズします。
公共の 最後のオブジェクトのreadObject()がスローにIOException、ClassNotFoundExceptionが
従業員のエンティティクラス(Employee.java)
1つの パッケージcom.cdh。 2 3 / ** 4 * @author chudonghai 5 * @editor 6 * @date 2019年9月23日下午2時16分27秒 7 * @versionのv1.0を 8 * @since 1.0 9 * @ClassName社員 10 * @説明雇员类 11 * / 12 パブリック クラス従業員が実装java.io.Serializableの 13を 14 { 15 / ** 16 *生成されたシリアルバージョンID 17 * / 18である プライベート 静的 最終的な ロングのserialVersionUID = -4308926516970571240L ; 19。 20れる パブリックストリング名; 21は、 パブリック文字列のアドレス、 22は 公衆 過渡 INT SSN; 23は、 公共 int型の数; 24 25 / ** 26は、 *説明:この方法の目的は、純粋のために、書くことですクラスは、より完全な無他の目的にしましょう。絡まないでください。 27 * * / 28 公共 ボイドMAILCHECK(){ 29 のSystem.out.printlnは(+名+ "" + "Aメーリングリストにチェック" アドレス); 30 } 31 }
デモを達成連載:
1つの 用のパッケージ変更com.cdh; 2 / ** 3 * @author chudonghai 4 * @editor 5 * @date 2019インディアン9 23午後午前2時29分01秒 6 * @version 7 * @since 8 * @ClassName SerializationDemo 9 * @descriptionシリアライゼーションデモ達成 10 * / 11。 インポート java.io. * ; 12は 13である パブリック クラスSerializationDemo 14 { 15 公共 静的 ボイドメイン(文字列[]引数) 16 { 17。 従業員の電子= 新しい従業員(); 18 = "chudonghai" e.name 。 19 = "北京" e.address 。 20 e.SSN = 999999999 。 21 e.number = 101 。 図22は、 お試し 23 { 24 のFileOutputStream fileOut = 25 新たFileOutputStream( "E://aaa//employee.serを" )。 26 ObjectOutputStreamのアウト= 新しいObjectOutputStreamの(fileOut)。 27 out.writeObject(E); 28 out.close()。 29 fileOut.close(); 30 System.out.printf( "直列化データをEに保存されている:/aaa/employee.ser" )。 31 } キャッチ(例外:IOException I) 32 { 33 i.printStackTrace()。 34 } 35 } 36 }
デモを達成デシリアライズ:
1つの 用のパッケージ変更com.cdh; 2 / ** 3 * @author chudonghai 4 * @editor 5 * @date 2019インディアン9 23日午後2時29分58秒 6 * @version 7 * @since 8 * @ClassName DeserializationDemo 9 * @descriptionデモ達成デシリアライズ 10 / *を 11。 インポート java.io. * ; 12は 13である パブリック クラスDeserializationDemo 14 { 15 公共 静的 ボイドメイン(文字列[]引数) 16 { 17 従業員E = NULL ; 18 試みる 19 { 20 のFileInputStream fileIn = 新規のFileInputStream( "E://aaa//employee.ser" )。 21 =でObjectInputStreamの新しいObjectInputStreamの(fileIn)。 22 、E = (従業員)in.readObject(); 23 in.close()。 24 fileIn.close()。 25 } キャッチ(例外:IOException I) 26 { 27 i.printStackTrace()。 28 リターン; 29 }キャッチ(ClassNotFoundExceptionがCの) 30 { 31 のSystem.out.println( "Employeeクラスが見つかりません" )。 32 c.printStackTrace()。 33 リターン; 34 } 35 のSystem.out.println( "非直列化従業員..." )。 36 のSystem.out.println( "名:" + e.name)。 37 のSystem.out.println( "住所:" + e.address)。 38 のSystem.out.println( "SSN:" + e.SSN)。 39 のSystem.out.println( "番号:" + e.number)。
詳細なオブジェクトはreadObjectメソッドを使用し変換する必要があります。
デシリアライズは、前世代のシーケンスは、ファイルを見つけることができない場合、それはにClassNotFoundに報告されます。