Exemple avec les foncteurs : public class Test { public Boolean f() { System.out.println("Fonction"); return true; } public void m() { System.out.println("Méthode void"); } public static void s() { System.out.println("Méthode statique"); } } import java.util.function.Consumer; import java.util.function.Function; @FunctionalInterface interface VoidFunction{ void execute(); } @FunctionalInterface interface BooleanFunction{ Boolean execute(Test t); } public class Main { public static void main(String[] args) { Function f = Test::f; Consumer c = Test::m; VoidFunction ss = Test::s; BooleanFunction b = Test::f; Test t = new Test(); f.apply(t); c.accept(t); ss.execute(); b.execute(t); } }