- - PR -
シリアライズについて(JAVABEANS)
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-06-19 10:55
JAVA会議室では初めて書き込む Hiroです。皆様宜しくお願いします。
今まではJavaアプレットをちょっとやってASPをメインに仕事をしてきたのですが Javaのサーバサイド技術を今勉強しています。そこでJavaBeansについて分からない事が あったのでお聞きしたいなと思い書き込みをさせていただきます。宜しくお願いします。 JavaBeansはimplements Serializableとして使うと書いてありました。Serializable とは変数を保持し、プロパティを保持するまでは理解出来たのですが 普通のクラスと 何が違うのかが分からないのです。普通のクラスもGetとSet用意してprivateの変数に アクセスさせれば変数保持が出来ると思うのですが・・・Serializableを使うと オブジェクトとして保持出来、ファイルにする事も出来ると読みました。そういう事を 言っているのかなぁっとぼんやり思ってますがもやもやが晴れなくて ぜんぜん検討違いなのかも知れませんが 宜しくお願いします。 |
|
投稿日時: 2002-06-19 11:26
そのあたりは誰でも悩むような気がしていますが、
サーバサイドの話で出てきたJavaBeanと通常のClassには はっきりした違いはありません。 MVCのMをBeanと呼びましょうと言う約束のようなものです。 もともとのJavaBeansというのはGUI Beanに代表されるように はっきりとしたルールがあったのではないかと思いますが (私はちゃんといじったことがありませんが)。 ちなみに、Serializableは > Serializableとは変数を保持し、プロパティを保持するまでは理解出来たのですが とかいう性質ものではなく、 単にオブジェクトをバイト列に変換可能であるとラベル付けするのものです。 結果としてファイルに書き出したり、それを読み出してオブジェクトを 再構成できますが、プロパティがどうとかいうこととは直接の関連はありません。 |
|
投稿日時: 2002-06-20 12:09
まりりさん 回答どうもありがとうございました。
JavaBeansはやはり明確な違いはないんですね。 Serializableについてもすごく納得しました。 そういう事が出来る目印をつけたという理解で いいんですね。 どうもありがとうございました。 |
|
投稿日時: 2002-06-20 18:32
ちょっと補足。。。
SerializableはImplementsしたらそれでシリアライズ及びデシリアライズが 完璧に行われると言う訳ではありません。 僕も最近知ったのですが、必要に応じてwriteObject()やreadObject、 readResolve()メソッドを実装する必要があります。 詳しくは書籍「Effective Java」をご覧下さい。 # でも、実際writeObject()やreadObject()って気にしていない・・・ |
|
投稿日時: 2002-06-20 21:56
ふぅ。
implements Serializable の意味は、「シリアル化できねばならない=ファイルとかに落とせねばならない」ということです。 となると、まぁ、何となくわかると思いますが、実体化できないようなオブジェクトへのリファレンスは持てないわけですね。 ありがちなのは、*InputStream/*OutputStream など。実体化できませんね。 |
|
投稿日時: 2002-06-21 12:14
YOU@ITさん、しょむさん追加説明どうもありがとうございました。
手元の本にはそこまで詳しくなかったので(JavaBeansを作る時はimplementsを付け 永続化を図ると書いてありました)Javaに関する書籍を1冊買ってみます。 Effective Javaぜひ読んで見たいと思います。1技術者としてため息をつかれる ような初歩的な質問(と回答)をしてしまい凄い恥ずかしいです。 もう少し勉強してから書き込みたいと思いますのでそのときは 宜しくお願いします。 |
1
