読書会(Effective Java (Second Edition))第8回議事録

[ 戻る ]


Effective Java 第二版 Java読書会議事録
出席 : 村山 尾関 高橋(智) 高橋(徹) 門脇 遠藤 高江洲 石黒 柴田 岩
室 松永 桜井 中島

項目72 スレッドスケジューラに依存しない
Eclipse上でbreak pointをスレッドあたりに当てはめれば、人間の力でスレッド
制御できるか?
ステップ実行は、ブレークポイントを入れた段階で、マルチスレッドのバグが消
えるので追いにくい。

項目73 スレッドグループ
ThreadGroupのAPIは使うべきでない <-- どういうAPIがあるのか?
基本ThreadGroupは使うべきでない。

項目74 Serializeを注意して実装する
親クラスがSerializableの時は実装が煩雑
serial UID はクラスの形を変えると変る
読む時にserialversion UIDを見て、自分の知らないfieldを無視して取り出すこ
とも可能。
メソッド追加するとSerial UID はversionが進む、Interfaceの型が変らなくて
も進むことに注意。
privateフィールドやprivateのmethodを変えると、違うUIDとして認識されるの
か? 不明
SerializableなGUIの送信とは? <-- JINIの時などでは、画面をSerializeして飛
ばす事が可能
合宿テーマ GUIのシリアライズ転送テスト
GUIのプロパティの保存の代わりに、画面をserializeしてステート毎保存可能
.netは、しくみとして、GUIの丸ごと保存が可能。
最初のSerializeクラスに
SerialVersionUID = 1234567890123L とかの変更は、自分で互換性が保証できる
のであれば変える必要なし。

項目75 カスタムシリアライズ形式の使用を検討する
serialverの計算負荷は? フィールドやメソッドがたくさんある場合はどうなるのか
//static final long serialVersionUID = -1415823175452211377L;
serializableにはtransient を埋め込む人が少ない。
RMIは内部的にserializableを使っていない、HTTPのセッションで流す時は
serializeしている。

項目76 防御的にreadObjectを書く

項目77 インスタンス制御に対してはreadResolveよりenum型を選ぶ
設計によっては機密情報を抜かれる危険性があるので注意。Serializableは危険。

項目77 シリアライズされたインスタンスの代わりにシリアライズ・プロキシを
検討する
Serialize proxy pattern でシリアライズしたいものだけを指定する
serilizationProxyメソッドはJava標準


[ 戻る ]