Here's a simple class that illustrates my problem:
package com.example;
import java.util.function.*;
public class App {
public static void main(String[] args) {
App a1 = new App();
BiFunction<App, Long, Long> f1 = App::m1;
BiFunction<App, Long, Void> f2 = App::m2;
f1.apply(a1, 6L);
f2.apply(a1, 6L);
}
private long m1(long x) {
return x;
}
private void m2(long x) {
}
}
f1
, referring to App::m1
, and being bound to a1
in f1
's call to apply
, works perfectly fine - the compiler is happy and the call can be made through f1.apply just fine.
f2
, referring to App::m2
, doesn't work.
I'd like to be able to define a method reference to an unbound non-static method with no return type, but I can't seem to make it work.