Если вы хотите описать функцию, которая не возвращает значение, вы можете использовать тип Void
. Это стандартный класс Java, но он предназначен для использования в этой ситуации.
Например,
Function<String, Void> stringPrinter = s -> {
System.out.println(s);
return null; // must return some value, null is acceptable since there is no Void instance
};
Значение return null;
важно, поскольку, с точки зрения компилятора, Void
, как и любой другой класс (например, String
, Integer
, et c). Он не знает, что он представляет отсутствие значения, тогда как он знает, что функция, которая возвращает void
, не имеет возвращаемого значения.
Это означает, что компилятор все еще ожидает некоторый оператор return
в вашем коде, как если бы он возвращал Integer
, и поэтому вы должны return null;
РЕДАКТИРОВАТЬ:
Однако вы можете обнаружить, что вы строго имеете дело с функциями с нет возврата, вы лучше использовать Consumer<T>
. Например:
Consumer<String> stringPrinter = s -> System.out.println(s);
stringPrinter.accept("hello");
или, используя ссылку на метод:
Consumer<String> stringPrinter = System.out::println;
stringPrinter.accept("hello");