看起來這是不可能的,但有沒有人有一個聰明的方法解決這個問題?強制通用類型爲接口?
public class SomeClassIterableWrapper<S, T extends SomeClass & S> implements Iterable<S>
凡S
應該是和SomeClass
一些未知類型的接口是2D陣列具有行索引,在功能上與雙向JDBC結果相似。 SomeClass
的子類對每列都有自定義的getter和setter。我希望能夠遍歷這個結構,就像我會List一樣。我想在我的SomeClass
和Bean之間實現一個通用接口來訪問getter和setter。因此S需要成爲那個界面。但是我提供的聲明不起作用。有沒有辦法解決這個問題?
編輯展示我期望的實現:
public class SomeClassIterableWrapper<S, T extends SomeClass & S> implements Iterable<S>{
T object;
public SomeClassWrapper(T object){
this.object = object;
}
@Override
public Iterator<S> iterator() {
object.setIndex(-1);
return new SomeClassIterator<S>();
}
private class SomeClassIterator<S> implements Iterator<S> {
@Override
public boolean hasNext() {
return object.index() < object.rowSize() - 1;
}
@Override
public S next() {
object.next();
//safe because only interface methods allowed, can't further manipulate index
return object;
}
@Override
public void remove() {
object.deleteRow();
}
}
就像它在描述中所說的那樣,S是一個接口 –
@LudwigMagnusson,無論'X'是類還是接口,只能在泛型類型參數定義中使用'extends X'。 –