强制泛型类型作为接口?

Ben*_*son 7 java generics

看起来这是不可能做到的,但有没有人能够巧妙地解决这个问题呢?

public class SomeClassIterableWrapper<S, T extends SomeClass & S> implements Iterable<S>
Run Code Online (Sandbox Code Playgroud)

哪里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();
    }
}
Run Code Online (Sandbox Code Playgroud)

art*_*tol 1

不能参数化SomeClassS?那么你可以有

public class SomeClassIterableWrapper<S, T extends SomeClass<S>> 
      implements Iterable<S>{
Run Code Online (Sandbox Code Playgroud)