class MyTest { interface I { void m1(int i); } static class A { void m(int i) {} } static class B extends A { void m(int i) { I mh = super::m; } } public static void main(String[] args) { new B().m(10); } } class MyTestWithBoxing { interface I { void m1(Integer i); } static class A { void m(int i) {} } static class B extends A { { I s = super::m; } void m(int i) { super.m(i); } } } class MyTest1 { interface I { void m(); } void call(I s) {} I i = NonExistentType::m; { call(NonExistentType::m); } }