-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のインスタンスとして扱われているように見えるというインテリ感覚を見ると、それは非常に奇妙です。なぜそれが起こっているのか、何か考えがありますか。ObjectTripResultDTO

また、私がやっていることをより良い方法で行うためのアイデアも大歓迎です。

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 に答える