Передача в метод имени геттера java

Нужна ваша помощь. Вычисляю максимальную длину полей экземпляров класса Racer:

int maxNameLength = racers.stream().map(Racer::getName).mapToInt(String::length).max().orElseThrow();
int maxTeamLength = racers.stream().map(Racer::getTeam).mapToInt(String::length).max().orElseThrow();

Нахождение maxNameLength практически идентично нахождению maxTeamLength, поэтому нужно сделать отдельный универсальный метод getMaxFieldLength(racers, Racer::getName/getTeam). Не могу понять, как написать метод getMaxFieldLength, в котором передается ссылка на геттер в параметры метода.

Так не работает:

public static int getMaxFieldLength(List<Racer> racers, String getter) {
    return racers.stream().map(Racer::getter).mapToInt(String::length).max().orElseThrow();
    }

Ответы (1 шт):

Автор решения: Igor
public static int getMaxFieldLength(List<Racer> racers, Function<Racer, String> getter) {
  return racers.stream().map(getter).mapToInt(String::length).max().orElseThrow();
}

int maxNameLength = getMaxFieldLength(racers, Racer::getName);
int maxTeamLength = getMaxFieldLength(racers, Racer::getTeam);
→ Ссылка