import java.util.Collection; class WildcardsInvocation { class Callable<X> {} class Collection<Y> {} <S> Collection<Callable<S>> fun(Collection<? extends Callable<S>> tasks) {} <T> void meth(Collection<? extends Callable<T>> tasks) { fun(tasks); } class MyType<X, Y> { } <K extends Enum<K>, V> void foo(MyType<K, ? extends V> myType) {} void test(){ MyType<?, ?> myType; foo(myType); } }