- - PR -
Serializableについて
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-06-27 08:14
お世話になります。
次のようなBaseEntityクラスがあります。
これを継承したクラスで"implements Serializable"を指定した場合と しない場合とで機能的に違うケースはありますか?
どちらもSerializableであり機能的な違いはないが、 「"implements Serializable"と書くのは スーパークラスを見なくてもそのクラスがSerializableだと一目でわかる」 という理由からではないかと推測しているのですが、 どうなのでしょうか? どうぞよろしくお願いします。 | ||||||||||||
|
投稿日時: 2007-06-27 09:20
3年半前のことですが、私も同じ疑問を持ちました。
「件名:java.util.Collection のメソッドがサブインターフェースの List にもあるのはなぜ?」 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7753&forum=12 昔からの慣習でそうなっているだけなんじゃないでしょうか?オブジェクトブラウザーのような類のツールがない時代は、ソースコードをテキストエディターでぱっと見ただけでは、Serializable なのかどうか分からないから付けているだけのような気がします。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||||||
|
投稿日時: 2007-06-27 09:30
基本クラス側もSerializableを実装しているなら同じ意味です。
BaseEntityはSerializableを実装しておらず、 ItemのみがSerializableを実装しているなら意味が変わり、 この場合はBaseEntityのフィールドが全てtransientとなります。
私はそう解釈しています。 | ||||||||||||
|
投稿日時: 2007-06-27 09:39
まったく無意味な実装です。
むしろ見る人が見ると冗長だ、という話になります。 明確でわかりやすい、なんていう人もいますが ぶっちゃけ if (flag == true) { と大差ないと思っています。 つまり、 if (flag) { でいいじゃない、ということで。 | ||||||||||||
|
投稿日時: 2007-06-27 09:51
こんにちは。
返信ありがとうございます。 みなさんのご意見を聞いて、納得することができました。
この件も気になっていたので勉強になりました。 どうもありがとうございました。 |
1