【发布时间】:2020-10-21 01:35:46
【问题描述】:
参考文献
- https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/package-summary.html
- https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/String.html#isEmpty()
- https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/ToIntFunction.html
- https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Integer.html#intValue()
这是Predicate 功能接口的抽象方法。它得到一个参数T t 并返回boolean。
boolean test(T t)
Evaluates this predicate on the given argument.
但是,在这个例子中,String::isEmpty 没有得到任何参数,而是String 的实例方法。
Predicate<String> p = String::isEmpty;
我可以推断,在 Java 中,这种类型的方法可以应用于具有一个参数的功能接口。
还有,有没有一个参数的函数接口的例子,函数只有一个参数,不像上面的例子?
【问题讨论】:
-
你错了 String::isEmpty 不是一个标准的谓词......不接受单个参数。它将正在测试的字符串作为其单个参数。相当于 lambda
(String s) -> !s.isEmpty() -
"..有没有一个参数的函数接口与函数有一个参数不像上面的例子?"类似
Predicate<String> isA = "A"::equalsIgnoreCase;? -
@Pshemo - 实际上,这是朝着另一个方向发展。这证明 Predicate 可以采用零参数。那不是我的观点。我的观点只是 String::isEmpty 不是这种情况。
-
@Steve 对不起,但我不确定你的意思(现在可能太累了)。无论如何,我的猜测是 OP 正在询问采用一个参数的方法示例,因为
isEmpty没有采用我的 suggestion 是equalsIgnoreCase采用一个参数。 -
@Pshemo - 我刚刚意识到这不是“零参数”的情况,因为它仍然需要一个字符串作为输入来测试“A”。但是,我没有意识到您可以这样做...使用一个采用单个参数的方法(除了接收器字符串之外),然后显式指定接收器字符串。太酷了!
标签: java