Lor*_*ith 4 java lambda java-8
在我的代码中,我有一个谓词方法,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))
);
}
Run Code Online (Sandbox Code Playgroud)
我需要使用值声明startDate(自定义日期MyDate)i.getSettlementDate,否则需要方法findDay(返回工作日),因为现在是null。
这里:
return (i -> {
return i.getCompany().equals("ACCEPTED")
&& i.getDealType() == MFDealTypeEnum.AcceptedDeal
&& i.getSettlementDate().beforeOrEqual(startDate.findDay(i.getDealDate(), 2, true))
});
Run Code Online (Sandbox Code Playgroud)
当不使用lambda的单行语法(例如)时x-> 2*x,您需要使用大括号。当您要声明局部变量时,不能使用该单行语法。
请参阅此处获取官方文档!
换句话说:当您要编写多个语句(例如实际定义局部变量)时,则需要这些花括号!
最后:小心您在这里做什么。(imho)Lambda表达式应该真正简短。当它们变得“更加复杂”时(例如:它们需要局部变量),那么我建议不要使用lambda,而应声明一个实际方法并进行调用。
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |