Java 无法解析lambda参数的类型

Java 无法解析lambda参数的类型,java,lambda,java-8,collectors,Java,Lambda,Java 8,Collectors,因此,我试图实现一个自定义收集器,但不幸的是,我遇到了一个非常有趣的问题: @Override public BiConsumer<Map<LocalDate, List<TripResultDTO>>, TripResultDTO> accumulator() { return (acc,elem) -> { long departureTime = elem.getOutbound().getDepartureTimeLoca

因此,我试图实现一个自定义收集器,但不幸的是,我遇到了一个非常有趣的问题:

@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);
    };
}
@覆盖
公共双消费者累加器(){
返回(acc,elem)->{
long departureTime=elem.getOutbound().getDepartureTimeLocal();
LocalDate departureDate=新的LocalDateTime(departureTime).toLocalDate();
在SameDay=acc.getOrDefault(departureDate,newLinkedList())中列出其他项;
当天的其他。添加(元素);
acc.put(出发日期,其他当天);
};
}
因此,在上面的代码中,编译器无法解析类型为
TripResultTo
的elem对象的任何方法

不用说,
getOutbound
方法以红色突出显示,无法解析。从智能意义上看,
TripResultsDTO
似乎只是作为
Object
的一个实例,而不是
TripResultTo
,这是非常奇怪的。你知道为什么会这样吗


此外,任何关于以更好的方式做我正在做的事情的想法都是受欢迎的

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

public class CheapestPerDayCollector <TripResultDTO> implements Collector<TripResultDTO, Map<LocalDate, List<TripResultDTO>>, List<TripResultDTO>> {
public类CheapestPerDayCollector实现收集器{
它实际上将TripResultsDTO表示为泛型类型,而不是实际的类。我将其重写为:

public class CheapestPerDayCollector  implements Collector<TripResultDTO, Map<LocalDate, List<TripResultDTO>>, List<TripResultDTO>> {
public类CheapestPerDayCollector实现收集器{

现在一切都正常了。

通过编译器,哪一个?什么版本的javac?还是Eclipse、IntelliJ、其他版本?JavaC1.8.0_60和IntelliJ 14,我做了,运气不好either@Zahari当我在
累加器
方法中注释返回块的内容时,两个参数
acc
elem
正确解析编辑为
Map
TripResultTo
类型。