【发布时间】:2017-03-16 09:28:00
【问题描述】:
我在一些项目中看到人们使用Predicates 而不是纯 if 语句,如下面的一个简单示例所示:
int i = 5;
// Option 1
if (i == 5) {
// Do something
System.out.println("if statement");
}
// Option 2
Predicate<Integer> predicate = integer -> integer == 5;
if (predicate.test(i)) {
// Do something
System.out.println("predicate");
}
首选Predicates 而非 if 语句有什么意义?
【问题讨论】:
-
这在您想要重用谓词时很有用。举个例子:如果你想对不同的
Lists 应用一个特定的过滤器怎么办?如果你想改变那个特定的过滤器怎么办?使用谓词是一种很好的方法,可以避免自己不得不在 100 多个地方更改代码。 -
对于您给出的示例,谓词是完全没有必要的,只会让事情变得更复杂,没有充分的理由。
-
从技术上讲,您将 if 语句用于两种用法。 Predicate 是一个用于生成变体条件的功能接口,通过它您可以在逻辑中测试这些变体条件。
-
投票重新开放。这个问题的范围不是太广,到目前为止已经吸引了一些质量不错的答案。
标签: java if-statement lambda java-8 predicate