import java.util.Map; class Test { interface IA { void a(); } interface IB { void b(T t); } void onEntry(IA i){ System.out.println(i); } void onEntry(IB> i){ System.out.println(i); } void foo(Test t) { t.onEntry(this::fooBar); } private void fooBar() {} }