Suche senden
Hochladen
Effective Java 輪読会 第6章 項目35-37
•
Als PPTX, PDF herunterladen
•
1 gefällt mir
•
1,273 views
Appresso Engineering Team
Folgen
Technologie
Diashow-Anzeige
Melden
Teilen
Diashow-Anzeige
Melden
Teilen
1 von 28
Jetzt herunterladen
Empfohlen
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
ユニットテスト_2日目
ユニットテスト_2日目
Yoshiki Shibukawa
ソフトウェア・テスト入門5
ソフトウェア・テスト入門5
Kenta Hattori
About junit
About junit
エンジニア勉強会 エスキュービズム
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
Beyond JUnit3
Beyond JUnit3
Koichi Sakata
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
Takuto Wada
Empfohlen
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
ユニットテスト_2日目
ユニットテスト_2日目
Yoshiki Shibukawa
ソフトウェア・テスト入門5
ソフトウェア・テスト入門5
Kenta Hattori
About junit
About junit
エンジニア勉強会 エスキュービズム
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
Beyond JUnit3
Beyond JUnit3
Koichi Sakata
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
Takuto Wada
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
Shoichi Matsuda
Spock's world
Spock's world
Takuma Watabiki
わんくま名古屋 #32 (20140823) TDD道場 #20
わんくま名古屋 #32 (20140823) TDD道場 #20
Yasuhiko Yamamoto
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
第1回JUnit勉強会ハンズオン
第1回JUnit勉強会ハンズオン
equj65
C++でテスト駆動開発
C++でテスト駆動開発
Akineko Shimizu
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
Takashi Imagire
PHP agile test tips
PHP agile test tips
Tsutomu Chikuba
xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11
Takuto Wada
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8
Kenta Hattori
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
kyon mm
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
テストコードの定型化
テストコードの定型化
Shinichi Hirauchi
Introduction to boost test
Introduction to boost test
Kohsuke Yuasa
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
takuyayamamoto1800
debug_profile.pdf
debug_profile.pdf
Nariaki Tateiwa
wankuma #28
wankuma #28
高見 知英
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
Takafumi Ikeda
datetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdf
YutaNemoto1
Unit testで定時帰宅!
Unit testで定時帰宅!
Funato Takashi
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
Takuto Wada
Weitere ähnliche Inhalte
Was ist angesagt?
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
Shoichi Matsuda
Spock's world
Spock's world
Takuma Watabiki
わんくま名古屋 #32 (20140823) TDD道場 #20
わんくま名古屋 #32 (20140823) TDD道場 #20
Yasuhiko Yamamoto
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
第1回JUnit勉強会ハンズオン
第1回JUnit勉強会ハンズオン
equj65
C++でテスト駆動開発
C++でテスト駆動開発
Akineko Shimizu
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
Takashi Imagire
PHP agile test tips
PHP agile test tips
Tsutomu Chikuba
xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11
Takuto Wada
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8
Kenta Hattori
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
kyon mm
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
テストコードの定型化
テストコードの定型化
Shinichi Hirauchi
Introduction to boost test
Introduction to boost test
Kohsuke Yuasa
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
takuyayamamoto1800
Was ist angesagt?
(16)
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
Spock's world
Spock's world
わんくま名古屋 #32 (20140823) TDD道場 #20
わんくま名古屋 #32 (20140823) TDD道場 #20
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
第1回JUnit勉強会ハンズオン
第1回JUnit勉強会ハンズオン
C++でテスト駆動開発
C++でテスト駆動開発
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
PHP agile test tips
PHP agile test tips
xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
テストコードの定型化
テストコードの定型化
Introduction to boost test
Introduction to boost test
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
Ähnlich wie Effective Java 輪読会 第6章 項目35-37
debug_profile.pdf
debug_profile.pdf
Nariaki Tateiwa
wankuma #28
wankuma #28
高見 知英
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
Takafumi Ikeda
datetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdf
YutaNemoto1
Unit testで定時帰宅!
Unit testで定時帰宅!
Funato Takashi
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
Takuto Wada
第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー
Tomoyuki Sato
TABOK Skill Category2解説
TABOK Skill Category2解説
Kinji Akemine
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
ソフトウェアテスト入門
ソフトウェアテスト入門
iKenji
Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能
Hiroto Yamakawa
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
ユニットテスト 1日目
ユニットテスト 1日目
Yoshiki Shibukawa
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
Yasui Tsutomu
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
Dai FUJIHARA
Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)
masanori kataoka
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
Satsuki Urayama
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
Ähnlich wie Effective Java 輪読会 第6章 項目35-37
(20)
debug_profile.pdf
debug_profile.pdf
wankuma #28
wankuma #28
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
datetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdf
Unit testで定時帰宅!
Unit testで定時帰宅!
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー
TABOK Skill Category2解説
TABOK Skill Category2解説
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
ソフトウェアテスト入門
ソフトウェアテスト入門
Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
ユニットテスト 1日目
ユニットテスト 1日目
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
Mehr von Appresso Engineering Team
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
Appresso Engineering Team
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
Appresso Engineering Team
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
Appresso Engineering Team
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
Appresso Engineering Team
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
Appresso Engineering Team
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
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 輪読会 項目66-68
Effective Java 輪読会 項目66-68
Appresso Engineering Team
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Appresso Engineering Team
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Appresso Engineering Team
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
Appresso Engineering Team
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
Appresso Engineering Team
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
Appresso Engineering Team
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
Appresso Engineering Team
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
Appresso Engineering Team
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
Appresso Engineering Team
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
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
Mehr von Appresso Engineering Team
(20)
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
Kürzlich hochgeladen
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
論文紹介: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
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Kürzlich hochgeladen
(11)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
論文紹介: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
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Effective Java 輪読会 第6章 項目35-37
1.
Effective Java 輪読会
第5回 (項目35~37) 2014/1/29 開発部 野口
2.
項目35 命名パターンよりアノテーションを選ぶ
3.
命名パターン 何らかのプログラム要素がツールやフレーム ワークによる特別な処理を要求していること を示すためのテクニック 例)JUnit テストフレームワークのテストメ ソッドは「test」で始まることが要求されてい た
4.
命名パターンの短所1 誤字に気づかない tsetSafetyOverride と名付けてしまっても、JUnit は何も言わない 黙って、実行しないだけ 余談:
CppUnit-x では(命名パターンとはちょっと違いま すが)関数ポインタを TestSuite に登録するコードが必要 で、書き忘れると何も起こらなかったので、うっかりミ スがないように、必ず最初はテストを fail させるようにし ていました
5.
命名パターンの短所2 適切なプログラム要素にだけそれらが使用さ れることを保証する方法がない 「testSafetyMechanisms クラス」を定義したと き、そのクラスのメソッドがテストとして実行さ れるかな?と期待するかもしれないが、されない
6.
命名パターンの短所3 プログラム要素にパラメータ値を関連付ける 良い方法を提供していない 「特定の例外をスローした場合にだけ成功する種 類のテスト」をスマートに書けない たとえば testThrowsException_throws_DataSpiderException() のように命名規則を用いることもできるが、脆弱 他の型が適切な場所では、文字列を避ける(項目50) 実行時にしか間違いに気づけない
7.
アノテーション これらの問題をすべて上手く解決します! // マーカーアノテーション型宣言 import java.lang.annotation.*; /** *
このアノテーションが付けられたメソッドがテストメソッドである ことを示す。 * パラメータなしの static のメソッドに対してだけ使用すること。 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Test { }
8.
解説(1/3) @Retention / @Target
メタアノテーション アノテーション型の宣言に対するアノテーション
9.
解説(2/3) @Retention(RetentionPolicy.RUNTIME) Test アノテーションを実行時に保持すべきことを 示す このメタアノテーションがないと、Test
アノテー ションはテストツールから見えなくなる @Target(ElementType.METHOD) アノテーションがメソッド宣言に対してのみ 許されていることを示す クラス宣言、フィールド宣言、その他のプログラ ム要素には @Test を適用できない Test
10.
解説(3/3) 「パラメータなしの static のメソッドに対し てだけ使用すること」
これを強制する方法はない コードを書く人がこれを守らなかった場合、実行 時に失敗する JUnit 4 では、java.lang.Exception がスローされます (動かしてみましょう)
11.
パラメータを持つアノテーション 型(1/2) import java.lang.annotation.*; /** * アノテーションが付けられたメソッドは、成功するには指定された例外 を *
スローしなければならないテストメソッドであることを示す。 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface ExceptionTest { Class<? extends Exception> value(); }
12.
パラメータを持つアノテーション 型(2/2) パラメータ型は、Class<? extends Exception> を拡張した何らかのクラスに対する Class
オブジェクト 境界型トークンの使用例 Exception (サンプルコードを実際に動かしてみましょ う)
13.
まとめ ソースファイルに情報を追加するためのプログラミ ングを必要とするツールを書くのであれば、適切な アノテーション型の集合を定義する すべてのプログラマは Java プラットフォームが提 供している事前に定義されたアノテーション型を使 用すべき 今やアノテーションを利用できるので、命名パターンを 使用するのは論外 例)@Override(項目36)、@SuppressWarnings(項 目24)、@Deprecated IDE
や静的解析ツールが提供しているアノテーショ ンを使用することを検討する
14.
項目36 常に Override アノテーションを使用する
15.
Override アノテーション メソッド宣言にだけ使用できる アノテーションが付けられたメソッド宣言が スーパータイプの宣言をオーバーライドして いることを示す 非道なバグの多くから保護してくれる 例)Bigram クラス(pp.170)の
equals メ ソッド
16.
Override アノテーションを付ける とき、付けないとき(1/3) スーパークラスの宣言をオーバーライドして いるすべてのメソッド宣言に付けるべき 抽象ではないクラスで、抽象メソッドをオー バーライドしているときは、不要 を付けなくても、オーバーライドして いないときにはコンパイルエラーになるため @Override 付けても問題はない
17.
Override アノテーションを付ける とき、付けないとき(2/3) コードインスペクション アノテーションが付いていなくてスー パークラスのメソッドをオーバーライドしている メソッドがあれば、IDE によっては警告を出して くれるものがある
Override
18.
Override アノテーションを付ける とき、付けないとき(3/3) インタフェースへの @Override
リリース 1.6 以降では、インタフェースからの宣 言をオーバーライドしているメソッド宣言にも Override アノテーションを付けることが可能 前述の抽象クラスと同様、具象クラスでのオー バーライドに関しては、不要 ただし、抽象クラスやインタフェースにおいては必ず 付けるようにする価値はある 例)Set インタフェースは Collection インタフェースに新 たなメソッドを追加していない。すべてのメソッドに @Override を付けることで、それを保証できる(誤って 新たなメソッドを追加してしまうことがない)
19.
まとめ スーパータイプの宣言をオーバーライドして いるすべてのメソッド宣言に Override アノ テーションを使用することで、コンパイラの 保護が得られる 具象クラスでは、抽象メソッド宣言をオー バーライドしているメソッドにアノテーショ ンを付ける必要はない
が、付けても害はない
20.
項目37 型を定義するためにマーカーイン タフェースを使用する
21.
マーカーインタフェース メソッド宣言を含んでいないインタフェース そのインタフェースを実装しているクラスが 何らかの特性を持っていると単に指定してい る 例)Serializable インタフェース
22.
マーカーインタフェースのマー カーアノテーションに対する長所 1 マーカーインタフェースは、マークされたク ラスのインスタンスが実装している型を定義 する 例)ObjectOutputStream.write(Object) が ObjectOutputStream.write(Serializable) ならよ かったが……。 マーカーアノテーションは型を定義しない
23.
マーカーインタフェースのマー カーアノテーションに対する長所 2 より正確に対象を特定できる そのマーカーが適用可能な唯一のインタ フェースをマーカーに拡張させることができ る すべてのマークされた型が、そのマーカーが 適用可能な唯一のインタフェースのサブタイ プであることも保証される 例)Set インタフェース
24.
マーカーアノテーションのマー カーインタフェースに対する長所 1 デフォルトを持つアノテーション型要素を 1 つ以上追加することで、すでに使用された後 でもアノテーション型に情報を追加できる インタフェースの場合、一旦実装された後に メソッドを追加することは一般に不可能
25.
マーカーアノテーションのマー カーインタフェースに対する長所 2 大きなアノテーション機構の一部 フレームワークの一貫性に寄与する
26.
マーカーアノテーションとマー カーインタフェースの使い分け (1/2) クラスやインタフェース以外のプログラム要 素に対してマーカーが適用される →マーカーアノテーション マーカーがクラスとインタフェースだけに適 用される かつ、このマークを持つオブジェクトだけを受け 付ける
1 個以上のメソッドを書きたい →マーカーインタフェース
27.
マーカーアノテーションとマー カーインタフェースの使い分け (2/2) マーカーがクラスとインタフェースだけに適 用される かつ、このマーカーの使用を、特定のインタ フェースの要素に永久に制限したい →マーカーインタフェース それ以外 →マーカーアノテーション
28.
まとめ 関連付けられた新たなメソッドを持たない型 を定義したいのであれば、マーカーインタ フェースを使用する クラスとインタフェース以外のプログラム要 素をマークしたいのであれば、マーカーアノ テーションを使用する 対象が ElementType.TYPE であるマーカーア ノテーションは要注意 要するに、型を定義したいのであれば、イン タフェースを使用すること
Jetzt herunterladen