Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 为什么我的调试断点没有影响我的lamda函数(java)?_Eclipse_Java 8 - Fatal编程技术网

Eclipse 为什么我的调试断点没有影响我的lamda函数(java)?

Eclipse 为什么我的调试断点没有影响我的lamda函数(java)?,eclipse,java-8,Eclipse,Java 8,大家好,我有一个SpringBootJava应用程序,我正在使用eclipse。我使用的是java streams,我在一个lambda函数上放置了一个断点。 例如,在下面的代码中,我在行上放置了一个断点 System.out.println(“筛选器请求开始日期”+filterRequest.getRangeStartDate());但它没有击中这里。知道我该怎么办吗 @Override public List<DropdownDTO> findAll(Messag

大家好,我有一个SpringBootJava应用程序,我正在使用eclipse。我使用的是java streams,我在一个lambda函数上放置了一个断点。 例如,在下面的代码中,我在行上放置了一个断点 System.out.println(“筛选器请求开始日期”+filterRequest.getRangeStartDate());但它没有击中这里。知道我该怎么办吗

    @Override
    public List<DropdownDTO> findAll(MessageHistoryCampaignFilterRequest filter) {

        List<Campaign> campaigns = campaignRepository.findAll();

        List<Campaign> filteredResults = campaigns.stream()

                .filter(getFilterPredicate(filter))

                .collect(Collectors.toCollection(LinkedList::new));

        return filteredResults.stream()

                .sorted(Comparator.comparing(Campaign::getStartDate))

                .map(campaignMapper::toDropdownDTO)

                .collect(toList()); 
}


    protected Predicate<Campaign> getFilterPredicate(MessageHistoryCampaignFilterRequest filterRequest) {

        Predicate<Campaign> predicate = campaign -> true;

        if(filterRequest.getAccountIds() != null && !filterRequest.getAccountIds().isEmpty()) {

            predicate.and( campaign -> filterRequest.getAccountIds().contains(campaign.getAccount())  );

        }

        if(filterRequest.getCampaignStatuses() != null && !filterRequest.getCampaignStatuses().isEmpty()) {

            predicate.and( campaign -> filterRequest.getCampaignStatuses().contains(campaign.getStatus()) );

        }


        predicate.and( campaign ->

        {

        System.out.println("filter request start date" + filterRequest.getRangeStartDate());

        System.out.println("filter request end date" + filterRequest.getRangeEndDate());

        System.out.println( campaign.getStartDate().isAfter(filterRequest.getRangeStartDate()) && campaign.getStartDate().isBefore(filterRequest.getRangeEndDate()) );

        System.out.println(  campaign.getEndDate().isAfter(filterRequest.getRangeStartDate()) && campaign.getEndDate().isBefore(filterRequest.getRangeEndDate()) );

        return ( campaign.getStartDate().isAfter(filterRequest.getRangeStartDate()) && campaign.getStartDate().isBefore(filterRequest.getRangeEndDate()))  ||

               ( campaign.getEndDate().isAfter(filterRequest.getRangeStartDate())&& campaign.getEndDate().isBefore(filterRequest.getRangeEndDate()));

        }

        );

        return predicate;
    }
@覆盖
公共列表findAll(MessageHistoryActivityFilterRequestFilter){
列出活动=活动存储库.findAll();
List filteredResults=活动。流()
.过滤器(getFilterPredicate(过滤器))
.collect(Collectors.toCollection(LinkedList::new));
返回filteredResults.stream()
.sorted(Comparator.comparing(活动::getStartDate))
.map(活动映射器::toDropdownDTO)
.collect(toList());
}
受保护的谓词getFilterPredicate(MessageHistoryCampaignFilterRequest filterRequest){
谓词=活动->真;
如果(filterRequest.GetAccountId()!=null&&!filterRequest.GetAccountId().isEmpty()){
和(campaign->filterRequest.getAccountIds().contains(campaign.getAccount());
}
if(filterRequest.getActivationStatuses()!=null&&!filterRequest.getActivationStatuses().isEmpty()){
和(campaign->filterRequest.getcampaignstatus().contains(campaign.getStatus());
}
谓词和(活动->
{
System.out.println(“筛选器请求开始日期”+filterRequest.getRangeStartDate());
System.out.println(“筛选请求结束日期”+filterRequest.getRangeEndDate());
System.out.println(campaign.getStartDate().isAfter(filterRequest.getRangeStartDate())和&campaign.getStartDate().isBefore(filterRequest.getRangeEndDate());
System.out.println(campaign.getEndDate().isAfter(filterRequest.getRangeStartDate())和&campaign.getEndDate().isBefore(filterRequest.getRangeEndDate());
return(campaign.getStartDate().isAfter(filterRequest.getRangeStartDate())和&campaign.getStartDate().isBefore(filterRequest.getRangeEndDate()))||
(campaign.getEndDate().isAfter(filterRequest.getRangeStartDate())和&campaign.getEndDate().isBefore(filterRequest.getRangeEndDate());
}
);
返回谓词;
}
谢谢你的帮助 谢谢

请注意:

返回一个组合谓词,该谓词表示此谓词和另一个谓词的短路逻辑AND

强调回报

因此,当您像
p1.和(p2)
那样调用它时,它不会改变
p1
p2
的行为,而是返回一个由两个谓词组成的新谓词


因此,您必须在代码中将
谓词和(…)
调用替换为
谓词=谓词。和(…)
,以改变后续使用
谓词的行为,您忽略了
谓词的结果。和(…)
但使用原始
谓词。连续三次。是的,这是正确答案。我可以接受你的回答,如果你张贴它。非常感谢。