在C#中,当我们想要创建可以将lambda表达式作为参数的方法时,我们可以根据情况使用Action
或Func<T>
。新的Java 8增加了对lambda的支持,但在如何使用lambda方面我找不到任何合适的例子。因此,假设我想在Java中创建一个类似于这个C#方法的方法:
public static Boolean Check (String S, Func<String, Boolean> AnAction) {
return AnAction(S);
}
那么,这究竟是如何用Java编写的呢?
发布于 2014-08-13 08:51:50
运行时的Lambda表达式基本上是functional interface的一个实例。因此,任何以函数接口类型作为参数的方法都可以传递一个lambda表达式。
例如,Java8在java.util.function
包中定义了许多现成的功能接口.你可以用其中之一。甚至你也可以自己创造。对于您的用例而言,等效的一个是java.util.function.Function
。但是,对于布尔返回值,可以直接使用Predicate
。
因此,假设您的方法定义如下:
public static boolean check(String testString, Predicate<String> predicate) {
return predicate.test(testString);
}
然后您可以像这样调用它:
check("Some String to test predicate on", s -> s.length() > 10);
发布于 2014-08-13 08:47:08
如果lambda返回boolean
,则可以使用Predicate
:
public static boolean check (String s, Predicate<String> pred)
{
return pred.test(s);
}
或者您可以使用通用的Function
:
public static Boolean check (String s, Function<String,Boolean> func)
{
return func.apply(s);
}
https://stackoverflow.com/questions/25291720
复制相似问题