import java.util.List; | |
class Test { | |
interface I<T> { | |
T foo(); | |
} | |
static class Foo<X> { | |
static <T> Foo<T> foo() { return null; } | |
} | |
<T, S extends Foo<T>> List<T> meth(I<S> p) { return null; } | |
void test() { | |
List<?> l1 = meth(Foo::new); | |
List<?> l2 = meth(Foo::foo); | |
List<String> l3 = meth(Foo::new); | |
List<String> l4 = meth(Foo::foo); | |
} | |
} |