interface TypeA { void test(String... arg); } interface TypeB extends TypeA { void test(String[] arg); } class Test { void foo(final TypeB typeB) { typeB.test("a", "b"); typeB.test("a"); typeB.test(); } }