John Calcote :
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.
Ousmane D. :
BiFunction
represents a function that accepts two arguments and produces a result.
I'd like to be able to define a method reference to an unbound non-static method with no return type
use a BiConsumer
instead which represents an operation that accepts two input arguments and returns no result.
BiConsumer<App, Long> f2 = App::m2;
then change this:
f2.apply(a1, 6L);
to this:
f2.accept(a1, 6L);
Guess you like
Origin http://10.200.1.11:23101/article/api/json?id=439652&siteId=1