est ici une classe simple qui illustre mon problème:Java 8 - comment puis-je déclarer une référence de méthode pour une méthode non liée non-statique qui retourne 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
, se référant à App::m1
, et être lié à a1
dans f1
appel à apply
, fonctionne parfaitement bien - le compilateur est heureux et l'appel peut être fait via f1.apply très bien.
f2
, en se référant à App::m2
, ne fonctionne pas. Je voudrais pouvoir définir une référence de méthode à une méthode non statique non liée sans type de retour, mais je n'arrive pas à la faire fonctionner.
Encore une autre victime de 'void! = Void' :) – Dariusz