| 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); | |
| } | |
| public class Target { | |
| void foo(Bar bar) { | |
| final Set<FooId<?>> keys = null; | |
| final Collection<FooObject> values = bar.get(keys); | |
| } | |
| } |