I am trying to make this compile:
package main;
import java.util.Iterator;
public class Example {
public <I extends BaseInterface, T extends BaseClass & I> Iterator<I> getInterfaceIterator(Iterator<T> iterator) {
return new Iterator<I>() {
public boolean hasNext() {
return iterator.hasNext();
}
public I next() {
T element = iterator.next();
return func(element);
}
public void remove() {
iterator.remove();
}
};
}
private <T extends BaseClass> T func(T element) {
return element;
}
public static class BaseClass implements BaseInterface {
}
public static interface BaseInterface {
}
public static class ImplementingClass extends BaseClass implements ImplementingInterface {
}
public static interface ImplementingInterface extends BaseInterface {
}
}
However, I am getting this compilation error:
Error:(7, 60) java: unexpected type required: class found: type parameter I
Error:(15, 28) java: incompatible types: inference variable T has incompatible upper bounds I,com.stampli.server.commons.communication.Example.BaseClass