Oto proste klasy, który ilustruje mój problem:Java 8 - jak mogę zadeklarować referencję metodę niezwiązaną metody non-statycznego zwracającej void
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
, odnosząc się do App::m1
i wiążąc się a1
w rozmowie f1
do apply
, działa idealnie dobrze - kompilator jest zadowolony, a połączenie można wykonać za pośrednictwem f1.apply po prostu w porządku.
f2
, odnosząc się do App::m2
, nie działa.
Chciałbym móc zdefiniować odwołanie metody do niezwiązanej metody niestatycznej bez typu zwracanego, ale nie mogę sprawić, żeby działało.
Kolejna ofiara 'void! = Void' :) – Dariusz