【发布时间】:2019-04-17 09:34:09
【问题描述】:
我有一个使用 lambda 表达式编写的 java 方法,我需要添加更多条件,并且我被禁止使用经典的 if 和 elses。这是我当前的代码,用于检查 getInstrument 是否具有正确的 ENUM:
public static Predicate<Deal> isDeal() {
return i ->
i.getInstrument() == ENUM1
|| i.getInstrument() == ENUM2
|| i.getInstrument() == ENUM3;
}
对于这段代码,我需要添加一个条件来检查i.getGroup() 是否为空,然后继续检查枚举是否正确。我还需要添加一个条件,如果 i.getGroup() != null and i.getGroup() != "NODEAL" 和 i.getInstrument() 不是 ENUM2 或 ENUM3,它返回 i。这就是我用经典 if 和 else 编写它的方式:
public static Predicate<Deal> is Deal() {
if ( i.getGroup() == null && i.getInstrument() == ENUM1
|| i.getInstrument() == ENUM2
|| i.getInstrument() == ENUM3) {
return i;
} else if ( i.getGroup() != null && i.getGroup() == "DEAL" &&
i.getInstrument() != ENUM2 || i.getInstrument() != ENUM3) {
return i;
}
}
我怎么能用 lambda 写这个?
【问题讨论】:
-
提示:经典的 if 需要在 && 之后加上括号,否则将无法按预期工作
-
为什么不允许使用“经典的 if 和 elses”?而且,请确保它符合要求,现在
Predicate<Deal> is Deal()没有什么意义 -i绝对不是Predicate -
@AndrewTobilko 我以为这是家庭作业
-
@AndrewTobilko 因为客户希望它带有 Lambda 表达式。
-
在第二个代码中,您缺少返回语句。
标签: java if-statement lambda java-8 predicate