gpt4 book ai didi

java - 在 java 中,我如何在 if lambda 条件中声明一个变量?

转载 作者:搜寻专家 更新时间:2023-11-01 01:12:03 24 4
gpt4 key购买 nike

在我的代码中,我有一个谓词方法,如果满足某些条件,它会返回 i,我需要在其中声明一个变量,但该方法是用 lambda 编写的,我不知道不知道该怎么做。这是我的代码:

public static Predicate<MFDWHDealExt> isAccepted() {
MyCalendar startDate = new MyCalendar();

return (i ->
i.getCompany().equals("ACCEPTED")
&& i.getDealType() == MFDealTypeEnum.AcceptedDeal
&& i.getSettlementDate().beforeOrEqual(startDate.findDay(i.getDealDate(), 2, true))
);
}

我需要用 i.getSettlementDate 的值声明 startDate(自定义日期 MyDate),否则方法 findDay (返回工作日),因为现在是 null

最佳答案

这里:

    return (i -> { 
return i.getCompany().equals("ACCEPTED")
&& i.getDealType() == MFDealTypeEnum.AcceptedDeal
&& i.getSettlementDate().beforeOrEqual(startDate.findDay(i.getDealDate(), 2, true))
});

使用lambda 的一行 语法时,例如x-> 2*x,您需要大括号。当您打算声明一个局部变量时,您不能使用这种单行语法。

参见 here求官方文档!

换句话说:当你想写几条语句时,比如实际定义一个局部变量,那么你需要这些大括号!

最后:小心你在这里做什么。 (恕我直言)Lambda 表达式应该非常简短。当它们变得“更复杂”(例如:它们需要局部变量)时,我建议不要使用 lambda,而是声明一个真正的方法并调用它。

关于java - 在 java 中,我如何在 if lambda 条件中声明一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56035304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com