class Test { private static void m(int i) {System.out.println(i);} private static void m(Integer i) {System.out.println(i);} interface I { void foo(int p); } static { I s = Test::m; System.out.println(s); } } class Test2 { static void m(Integer i) { } interface I1 { void m(int x); } interface I2 { void m(Integer x); } static void call(I1 i1) { System.out.println(i1); } static void call(I2 i2) { System.out.println(i2); } static { call(Test2::m); } }