EeBlog(テクニカルブログ)

第30回 直列化

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

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

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

(さらに…)

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

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

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

(さらに…)

第28回 cloneメソッド

今回のテーマは「cloneメソッド」です。

cloneメソッドは自分自身の複製を行うメソッドです。 Objectクラスで宣言されているprotectメソッドであり、Objectクラスを除く全てのクラスはObjectクラスのサブクラスなので、どのクラスでもcloneメソッドを呼び出すことが可能です。 しかし、呼び出すことが可能であっても、使うことができるとは限りません。 というのは、cloneメソッドを使用するためには、Cloneableインターフェースをインプリメントする必要があるからです。 もしCloneableインターフェースをインプリメントせずにcloneメソッドを実行した場合、CloneNotSupportedExceptionが発生します。 Cloneableインターフェース自体はマーカーインターフェースであり、特別なメソッドを実装する必要はありません。

(さらに…)