我有一些类:SearchResponse,SearchResponseHit,SpecialSearchResponse(扩展SearchResponse)和SpecialSearchResponseHit(扩展SearchResponseHit).
SearchResponse看起来像这样:
public class SearchResponse implements Iterable<SearchResponseHit> {
[...]
public Iterator<SearchResponseHit> iterator() {
return searchResponseHits.iterator();
}
}
Run Code Online (Sandbox Code Playgroud)
这使我可以在foreach循环中使用SearchResponse的实例,如下所示:
for (SearchResponseHit hit : mySearchResponse) {
[...]
}
Run Code Online (Sandbox Code Playgroud)
现在,当我有一个SpecialSearchResponse实例时,我想做的,但无法弄清楚如何编译这段代码:
for (SpecialSearchResponseHit specialHit : mySpecialSearchResponse) {
[...]
}
Run Code Online (Sandbox Code Playgroud)
这给了我以下编译器错误:
Type mismatch: cannot convert from element type SearchResponseHit to SpecialSearchResponseHit
Run Code Online (Sandbox Code Playgroud)
如果我尝试将此代码添加到SpecialSearchResponse:
public Iterator<SpecialSearchResponseHit> iterator() {
[...]
}
Run Code Online (Sandbox Code Playgroud)
......我收到错误:
The return type is incompatible with Iterable<SearchResponseHit>.iterator()
Run Code Online (Sandbox Code Playgroud)
我尝试将SearchResponse中的方法更改为:
public Iterator<? extends SearchResponseHit> iterator() {
return searchResponseHits.iterator();
}
Run Code Online (Sandbox Code Playgroud)
......但这给了我错误:
The return type is incompatible with Iterable<SearchResponseHit>.iterator()
Run Code Online (Sandbox Code Playgroud)
然后我尝试将类定义更改为: …