Существуют фиксированные шаги, чтобы сделать что-то, поэтому я извлек это как общий метод, см. Ниже
private static <T>void commonMethod(GetListAction getListAction, Function<T, Integer> tObjectFunction) {
List<T> list = getListAction.action();
List<Integer> proIdList = list.stream().map(tObjectFunction).collect(Collectors.toList());
List<ProEntity> proEntityList = getProEntityListByProIdList(proIdList);
// do something with proEntityList
// ...
}
interface GetListAction<T> {
List<T> action();
}
Теперь в различий я вызываю общий метод, как показано ниже
commonMethod(()->getFooList(), Foo::getProId);
commonMethod(()->getBarList(), Bar::getProId);
но я все еще хочу знать, можно ли удалить второй параметр в commonMethod
?
private static <T>void commonMethod(GetListAction getListAction)
но как в этом случае получить proIdList из списка
List<Integer> proIdList = list.stream().map(???).collect(Collectors.toList());