Java - generic type parameter to depend generic interface

Viewed 60

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

0 Answers
Related