Можно передать лямбда-выражение в качестве параметра функции? Пример следующим образом: я хочу передать «стратегию», которая извлекает свойства из элементов списка. Для того, чтобы не повторять отображение потока снова и снова.
List<MyObject> list;
list.stream().map(item -> item.field1)).collector(Collectors.joining(","));
list.stream().map(item -> item.field2)).collector(Collectors.joining(","));
list.stream().map(item -> {
//some complex parser function
})).collector(Collectors.joining(","));
...
//pseudocode
private String map(List<MyObject> list, Function func) {
return list.stream.map(item -> func.call()).collector(Collectors.joining(","));
}
Обновление
что если тип объекта изменится? Я все еще хочу иметь мой общий метод map()
, который определяет сбор извлеченного поля. Но по мере изменения типа объекта я просто хочу предоставить функцию, которая знает, как извлечь требуемое свойство.
class Person {
String name;
}
class Car {
String manufacture;
}
map(persons, (person) -> person.name));
map(cars, (car) -> car.manufacture));
map(cars, (MyObject) -> {
//more complex parsing
}));