:@Override注釈のjavadocから
When do you use Java’s @Override annotation and why?はいつJavaで@Overrideを使用する
:
は、メソッドの宣言が がに意図されていることを示しますスーパークラスのメソッド の宣言をオーバーライドします。 メソッドにこの 注釈タイプで注釈が付けられていますが、スーパークラスメソッド が上書きされない場合は、コンパイラはエラーメッセージを生成するために が必要です。
タイプの特定のメソッドをテストし、テスト対象から呼び出される他のメソッドの動作を置き換えたい場合、@Overrideアノテーションをテストで使用する傾向がありました。私の同僚の一人は、これは有効な使用ではないが、なぜその理由がわからないのか、しっかりとしている。誰もそれが避けられるべき理由を提案することはできますか?
私の使用方法を説明するために、以下の例を追加しました。
試験対象fooの:私はこのようなテストを定義し
public class Foo {
/**
* params set elsewhere
*/
private Map<String, String> params;
public String doExecute(Map<String, String> params) {
// TODO Auto-generated method stub
return null;
}
public String execute() {
return doExecute(params);
}
}
:
public void testDoExecute() {
final Map<String, String> expectedParams = new HashMap<String, String>();
final String expectedResult= "expectedResult";
Foo foo = new Foo() {
@Override
public String doExecute(Map<String, String> params) {
assertEquals(expectedParams, params);
return expectedResult;
}
};
assertEquals(expectedResult, foo.execute());
}
その後、私のdoExecute()の署名が変更された場合、私は私のテストでコンパイルエラーが発生します、むしろ混乱した実行失敗ではありません。
デュプルですが、今すぐ見つけることができません... – jjnguy
見つけた:http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why – AlbertoPL
この質問には、コードを正しく表示するための編集が必要です。 –