import java.util.Collection; | |
import java.util.Set; | |
class FooObject<T> {} | |
class FooId<T extends FooObject> {} | |
interface Bar { | |
<T extends FooObject, I extends FooId<? extends T>> T get(I key); | |
<T extends FooObject, I extends FooId<? extends T>> Collection<T> get(Collection<I> keys); | |
} | |
class Target { | |
void foo(Bar bar) { | |
final Set<FooId<?>> keys = null; | |
final Collection<FooObject> values = bar.get(keys); | |
} | |
} |