演習課題「ObjectOutputStreamクラス と Serializable を使用してみよう」

現在、ObjectOutputStreamクラスのコンストラクタを使い、/home/ubuntu/java-file/files/out.txtに、Testbクラスのオブジェクトを書き込もうとしています。
/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Testa.javaにおいて、Testbクラスのオブジェクトを書き込むよう、ObjectOutputStreamクラスのコンストラクタに対し、引数にFileOutputStreamクラスのインスタンスを使用するようコードを修正してください。また、Testbクラスのオブジェクトを書き込むには、writeObjectメソッドを使います。引数にはTestbクラスのインスタンスであるtbを適用してください。
ただし、これだけではNotSerializableExceptionが発生してしまいます。そのため、/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Testb.javaにおける、TestbクラスにSerializableを実装してください。
修正後、コンパイルと実行を行い結果を確認してください。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。

$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java

また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Testa

演習課題「ObjectInputStreamクラス を使用してみよう」

現在、ObjectInputStreamクラスのコンストラクタを使い、/home/ubuntu/java-file/files/out.txtに、Testbクラスのオブジェクトを書き込み、その内容を復元し、デシリアライズしようとしています。
/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Testa.javaにおいて、Testbクラスのオブジェクトを書き込む処理に続けて、デシリアライズの処理を完成させてください。
まず、ObjectInputStreamクラスのコンストラクタに対し、引数にFileInputStreamクラスのインスタンスを使用するようコードを修正してください。続いて、eadObjectメソッドを使いオブジェクトを復元してください。その際に、忘れずTestb型へのキャストをしてください。最後に変数tbが出力されるようを修正してください。修正後、コンパイルと実行を行い結果を確認してください。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。

$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java

また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Testa

期待する出力値

Testa
jp.paiza.file.B@xxxxxxxx

※ただし、jp.paiza.file.B@xxxxxxxx の値は環境によって異なります

演習課題「transient を使用してみよう」

現在、transientの有無による変数の違いを確かめようとしています。
/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Testb.javaにおいて、transientを付与しない変数job1と、transientを付与する変数job2を宣言してください。
その後、/home/ubuntu/java-file/source/jp.paiza.file/jp/paiza/file/Testa.javaにおいて、Testbクラスのインスタンスtbのインスタンス変数job1には文字列勇者を、インスタンス変数job2には文字列戦士を代入してください。
その際に、それぞれの変数を出力するよう修正し、修正後、コンパイルと実行を行い結果が正しく出力されれば完了です。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。

$ javac -d classes/jp.paiza.file -p classes source/jp.paiza.file/module-info.java source/jp.paiza.file/jp/paiza/file/*.java

また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.paiza.file/jp.paiza.file.Testa

期待する出力値

Testa
勇者
null

※有料会員になるとこの動画をご利用いただけます
詳しい説明を読む

#06:シリアライズ

このチャプターでは、シリアライズ、transient修飾子について学習します。