EeBlog(テクニカルブログ) :Javaワンポイント

第31回 transient

今回のテーマは「transient」です。

まず「transientとは何ぞや」というところから始めましょう。 transientはJavaの予約語の1つで、フィールド修飾子に分類されます。 transientを付けられたフィールドは、直列化の対象外となります。 では、どのような場合にtransientを使うのでしょうか。

transientを使う場合、2パターン考えられます。 1つは状態を保存する必要のない場合です。 直列化復元の際に初期化したいフィールドが該当します。 もう1つは直列化したいクラスに直列化不可能な参照型のフィールドがある場合です。

(さらに…)

第30回 直列化

今回のテーマは「直列化」です。

まずは「直列化とは何ぞや」というところから始めましょう。 直列化(serialize)とは、オブジェクトとそのインスタンス変数をバイト列やXMLに変換することです。 これにより、オブジェクトをファイルとして保存したり、ネットワークで送信することができるようになります。 直列化されたオブジェクトを復元する処理は直列化復元(deserialize)といいます。

直列化を利用するには、直列化したいクラスにjava.io.Serializableインターフェースをインプリメントします。 参照型のインスタンス変数がある場合は、その参照型にもSerializableインターフェースをインプリメントしなければいけません。

(さらに…)

第29回 シャローコピーとディープコピー

今回のテーマは「シャローコピーとディープコピー」です。

まずは「シャローコピーとは何ぞや」というところから始めましょう。 シャロー(shallow )とは「浅い」という意味です。 では、シャローコピーはいったい何を「浅い」としているのでしょうか。 この疑問を解決するために、前回説明したcloneメソッドを利用して説明していきます。 というのは、JavaのObjectクラスのcloneメソッドの実装はシャローコピーだからです。 前回cloneメソッドを使用した際にシャローコピーが行われていたのですね。

(さらに…)