interface I { void m(); } interface I1 { void m(A a); } interface I2 { void m(A a1, A a2); } interface IV { void m(A... as); } class AmbiguityVarargs { void foo(I s) { } void foo(I1 s) { } void foo(I2 s) { } void foo(IV s) { } void test() { foo(()->{}); foo((a1) -> {}); foo((a1, a2)->{}); } }