Suche senden
Hochladen
Effective Java 輪読会 項目76
•
Als PPTX, PDF herunterladen
•
0 gefällt mir
•
901 views
Appresso Engineering Team
Folgen
Effective Java 輪読会 項目76
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 10
Jetzt herunterladen
Empfohlen
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
Appresso Engineering Team
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
Appresso Engineering Team
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
Appresso Engineering Team
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
Appresso Engineering Team
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
Appresso Engineering Team
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
Appresso Engineering Team
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
Appresso Engineering Team
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Appresso Engineering Team
Empfohlen
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
Appresso Engineering Team
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
Appresso Engineering Team
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
Appresso Engineering Team
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
Appresso Engineering Team
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
Appresso Engineering Team
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
Appresso Engineering Team
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
Appresso Engineering Team
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Appresso Engineering Team
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
Appresso Engineering Team
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
Appresso Engineering Team
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
Appresso Engineering Team
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
Appresso Engineering Team
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
Appresso Engineering Team
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
Appresso Engineering Team
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
Appresso Engineering Team
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
Appresso Engineering Team
Java9 and Project Jigsaw
Java9 and Project Jigsaw
takezoe
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Amazon Web Services Japan
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Appresso Engineering Team
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
Appresso Engineering Team
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
Appresso Engineering Team
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
Appresso Engineering Team
Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37
Appresso Engineering Team
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34
Appresso Engineering Team
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31
Appresso Engineering Team
Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29
Appresso Engineering Team
Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25
Appresso Engineering Team
Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22
Appresso Engineering Team
Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17
Appresso Engineering Team
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12
Appresso Engineering Team
Weitere ähnliche Inhalte
Andere mochten auch
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
Appresso Engineering Team
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
Appresso Engineering Team
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
Appresso Engineering Team
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
Appresso Engineering Team
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
Appresso Engineering Team
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
Appresso Engineering Team
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
Appresso Engineering Team
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
Appresso Engineering Team
Java9 and Project Jigsaw
Java9 and Project Jigsaw
takezoe
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Amazon Web Services Japan
Andere mochten auch
(10)
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
Java9 and Project Jigsaw
Java9 and Project Jigsaw
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Mehr von Appresso Engineering Team
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Appresso Engineering Team
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
Appresso Engineering Team
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
Appresso Engineering Team
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
Appresso Engineering Team
Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37
Appresso Engineering Team
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34
Appresso Engineering Team
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31
Appresso Engineering Team
Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29
Appresso Engineering Team
Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25
Appresso Engineering Team
Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22
Appresso Engineering Team
Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17
Appresso Engineering Team
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12
Appresso Engineering Team
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10
Appresso Engineering Team
Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目5,6,7
Appresso Engineering Team
Mehr von Appresso Engineering Team
(14)
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22
Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目5,6,7
Kürzlich hochgeladen
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Kürzlich hochgeladen
(10)
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Effective Java 輪読会 項目76
1.
Effective Java 輪読会第9回
(項目76) 2014/3/12 開発部野口
2.
項目76 防御的にreadObject を書く
3.
readObject は もう1
つのpublic コンストラクタ よって、以下の指針がreadObject にも当ては まる 項目38 パラメータの正当性を検査する 項目39 必要な場合には、防御的にコピーする
4.
パラメータの正当性を検査する 入力バイトストリームを直接編集することによって、任
意の値を持ったオブジェクトを生成できてしまう! (pp.292) ので、defaultReadObject の呼び出し後に正当性検査を 行うreadObject メソッドを提供する private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { ↓ s.defaultReadObject(); // 不変式が満足されているかどうかを検査する if (start.compareTo(end) > 0) throw new InvalidObjectException(start + " after " + end); }
5.
不正オブジェクト参照 シリアライズしたバイト列のあとに特定のバ
イト列を追加し、そのバイト列をreadObject でディシリアライズすることによって、 Period オブジェクト内部のDate フィールド への参照を取得することができる!(pp.293- 294) (この辺詳しくは、「Java オブジェクト直列化 仕様」を読みましょう)
6.
不正オブジェクト参照への対処: 防御的にコピーする private
void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { s.defaultReadObject(); // 可変要素を防御的にコピーする start = new Date(start.getTime()); end = new Date(end.getTime()); // 不変式が満足されているかを検査する if (start.compareTo(end) > 0) throw new InvalidObjectException(start + " after " + end); }
7.
防御的コピーについての諸注意 正当性検査は防御的コピーの後に行う
先に行うと、TOCTOU 攻撃にさらされる(参照: 項 目39) clone メソッドを使用しない clone は、不正なサブクラスを返すことができる(参 照: 項目39) (残念ながら)フィールドをfinal にすることは できない 防御的コピーの代わりにwriteUnshared / readUnshared を使用しない(参照: 項目77 の問 題が生じる)
8.
デフォルトのreadObject を 使用できるか?
「オブジェクト内のtransient ではない個々の フィールドに対する値をパラメータとして受 け取り、それらの値を正当性検査をすること なくフィールドに保存するpublic のコンスト ラクタ」を追加することを快く感じるか 感じなければ、明示的なreadObject メソッドを 提供し、コンストラクタと同等の正当性検査と防 御的コピーを行う あるいは、シリアライズ・プロキシ・パターンを用い る(参照: 項目78)
9.
readObject では、オーバーライド可能 なメソッドを呼び出さない
「項目17 継承のために設計および文書化する、 でなければ継承を禁止する」で示されたもの と同様の問題があります サブクラスの状態がディシリアライズされる前に 実行される
10.
まとめ private
でなければならないオブジェクト参照 フィールドを持つクラスでは、それらを防御的に コピーする (防御的コピーの後に)不変式を検査し、失敗し た場合はInvalidObjectException をスローする ディシリアライズされた後にオブジェクトグラフ 全体の正当性を検査したければ、 ObjectInputValidation インタフェースを使用する (この辺詳しくは、「Java オブジェクト直列化仕 様」を読みましょう) クラス内のオーバーライド可能なメソッドを呼び 出さない
Jetzt herunterladen