class Main { | |
class Foo { } | |
interface GenericBase <F> { } | |
class GenericDerived <F extends Foo> implements GenericBase<F> { } | |
private <B extends Foo> void foo(GenericBase<B> g) { } | |
private <D extends Foo> void foo(GenericDerived<D> g) { } | |
void bar() { | |
GenericDerived<Foo> gd = new GenericDerived<>(); | |
foo(gd); | |
} | |
} |