看起来这是不可能的,但是有人有解决这个问题的聪明方法吗?
public class SomeClassIterableWrapper<S, T extends SomeClass & S> implements Iterable<S>
WhereS
应该是某种未知类型的接口,并且SomeClass
是具有行索引的二维数组,在功能上类似于双向 JDBC 结果集。的子类SomeClass
对每一列都有自定义的 getter 和 setter。我希望能够像列表一样遍历这个结构。我想在我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();
}
}