Передача в метод имени геттера 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);