1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
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); } }