簡単なものが欠けていることを本当に願っていますが、次を読んでいます: http://docs.oracle.com/javase/tutorial/java/IandI/override.html。
2 つのクラスと 1 つのインターフェイスがあります。文字通り、この Oracle ドキュメント ページに示されている「ユース ケース」です。ただし、JUnit テストを実行すると、スーパークラスのメソッドのみが呼び出され 、そのメソッドには呼び出されたくない単純なデフォルトがあります。
インターフェイスには、次のメソッド シグネチャが含まれています。
public interface RecordServiceInterface {
List<String> searchRecords(String id) throws ServiceException;
}
インターフェイスを実装するスーパークラスには、このメソッドがデフォルトで含まれています。Eclipse IDE は、実装クラスによって実装されていない欠落メソッドを検出すると、これを挿入します。
public class RecordService implements RecordServiceInterface {
public List<String> searchRecords(String id) throws ServiceException {
// TODO Auto-generated method stub
return null;
}
}
実行時に、デバッガーをステップ実行すると、上記のみが呼び出されます...毎回。
次に、サブクラスはスーパークラスを拡張し、オーバーライドしたい実際の実装を持ちます。
public class MyRecordService extends RecordService {
@Override
public List<String> searchRecords(String id) throws ServiceException {
List<String> myList = new ArrayList<String>();
// ...
return myList;
}
}
のポイントを完全に見逃しているに違いありません@Override
。@Override
実行中、アノテーションを使用してメソッドに入ることが繰り返し失敗します。