在Java 8中支持lambda表达式

时间:2014-08-13 16:43:11

标签: java lambda java-8

在C#中,当我们想要创建可以将lambda表达式作为参数的方法时,我们可以使用ActionFunc<T>,具体取决于具体情况。新的Java 8增加了对lambdas的支持,但我找不到任何关于如何使用它的体面的例子。所以假设我想在Java中创建一个类似于这个C#的方法:

public static Boolean Check (String S, Func<String, Boolean> AnAction) {
     return AnAction(S);
} 

这究竟是用Java编写的呢?

2 个答案:

答案 0 :(得分:5)

运行时的Lambda表达式基本上是functional interface的一个实例。因此,任何将函数接口类型作为参数的方法都可以传递一个lambda表达式。

例如,Java 8在java.util.function包中定义了许多现成的功能接口。你可以使用其中一个。甚至你可以创建自己的。用例的等效值为java.util.function.Function<T, R>。对于布尔返回值,您可以直接使用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);

答案 1 :(得分:2)

如果您的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);
}