interface MethodRefAdd2 { int add(int a, int b); } interface MethodRefAdd3 { int add(int a, int b); } class MethodRefAddGen3 { static int add(int a, int b) { return a + b; } } public class MethodRefGen3 & MethodRefAdd3> { static int add(int a, int b) { return a + b; } static int Add(MethodRefAdd2 a, int b, int c) { return a.add(b, c); } public static void main(String[] args) { MethodRefAdd2 a = Integer::sum; int res = a.add(12, 13); System.out.println(res); MethodRefAdd2 a1 = MethodRefAddGen3::add; int res1 = a1.add(12, 13); System.out.println(res1); Integer sum = Add(Integer::sum, 12, 13); System.out.println(sum); Integer sum2 = Add(MethodRefGen3::add, 12, 13); System.out.println(sum2); Integer sum3 = Add(MethodRefAddGen3::add, 12, 13); System.out.println(sum3); } }