Załóżmy, że mam następujący interfejs funkcjonalny w Javie 8:
interface Action<T, U> {
U execute(T t);
}
A w niektórych przypadkach potrzebuję akcji bez argumentów lub typu zwracanego. Piszę więc coś takiego:
Action<Void, Void> a = () -> { System.out.println("Do nothing!"); };
Daje mi to jednak błąd kompilacji, muszę go zapisać jako
Action<Void, Void> a = (Void v) -> { System.out.println("Do nothing!"); return null;};
Co jest brzydkie. Czy jest jakiś sposób na pozbycie się Void
parametru type?
Runnable
tego, czego szukaszRunnable r = () -> System.out.println("Do nothing!");