mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-21 21:50:54 +07:00
44 lines
1.0 KiB
Java
44 lines
1.0 KiB
Java
class Foo<R> {
|
|
public interface Factory<U> {
|
|
U make();
|
|
}
|
|
|
|
interface ASink<R, K extends ASink<R, K>> {
|
|
public void combine(K other);
|
|
}
|
|
|
|
static <R, S extends ASink<R, S>> R reduce(Factory<S> factory) {
|
|
return null;
|
|
}
|
|
|
|
public void foo() {
|
|
reduce(Moo::new);
|
|
<error descr="Inferred type 'Foo<R>.AMoo' for type parameter 'S' is not within its bound; should implement 'Foo.ASink<java.lang.Object,Foo<R>.AMoo>'">reduce(AMoo::new)</error>;
|
|
reduce(AAMoo::new);
|
|
reduce(AAAMoo::new);
|
|
}
|
|
|
|
private class Moo implements ASink<R, Moo> {
|
|
@Override
|
|
public void combine(Moo other) {
|
|
}
|
|
}
|
|
|
|
private class AMoo {
|
|
}
|
|
|
|
private class AAMoo implements ASink<AAMoo, AAMoo> {
|
|
@Override
|
|
public void combine(AAMoo other) {
|
|
}
|
|
}
|
|
|
|
private class AAAMoo implements ASink<R, AAAMoo> {
|
|
private AAAMoo() {
|
|
}
|
|
|
|
@Override
|
|
public void combine(AAAMoo other) {
|
|
}
|
|
}
|
|
} |