-1

所以我正在尝试实现一个自定义收集器,但不幸的是我遇到了一个非常有趣的问题:

@Override
public BiConsumer<Map<LocalDate, List<TripResultDTO>>, TripResultDTO> accumulator() {
    return (acc,elem) -> {
        long departureTime = elem.getOutbound().getDepartureTimeLocal();
        LocalDate departureDate = new LocalDateTime(departureTime).toLocalDate();
        List<TripResultDTO> othersInTheSameDay = acc.getOrDefault(departureDate,new LinkedList<>());
        othersInTheSameDay.add(elem);
        acc.put(departureDate,othersInTheSameDay);
    };
}

所以在上面的代码中,编译器无法解析类型为 elem 对象的任何方法TripResultDTO

不用说该getOutbound方法以红色突出显示,无法解决。TripResultsDTO通过查看似乎被简单地视为Object而不是的实例的智能感觉,这很奇怪TripResultDTO。你知道为什么会发生这种情况吗?

也欢迎以更好的方式做我正在做的事情的任何想法。

4

1 回答 1

0

所以实际上这是一个非常菜鸟的错误。我在收藏家的签名中所做的是:

public class CheapestPerDayCollector <TripResultDTO> implements Collector<TripResultDTO, Map<LocalDate, List<TripResultDTO>>, List<TripResultDTO>> {

这实际上将 TripResultsDTO 表示为泛型类型而不是实际类。我将其重写为:

public class CheapestPerDayCollector  implements Collector<TripResultDTO, Map<LocalDate, List<TripResultDTO>>, List<TripResultDTO>> {

现在一切正常。

于 2016-02-08T11:53:37.573 回答