首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java 8中对lambda表达式的支持

Java 8中对lambda表达式的支持
EN

Stack Overflow用户
提问于 2014-08-13 16:43:11
回答 2查看 198关注 0票数 1

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

代码语言:javascript
运行
复制
public static Boolean Check (String S, Func<String, Boolean> AnAction) {
     return AnAction(S);
} 

那么,这究竟是如何用Java编写的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-13 16:51:50

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

例如,Java8在java.util.function包中定义了许多现成的功能接口.你可以用其中之一。甚至你也可以自己创造。对于您的用例而言,等效的一个是java.util.function.Function。但是,对于布尔返回值,可以直接使用Predicate

因此,假设您的方法定义如下:

代码语言:javascript
运行
复制
public static boolean check(String testString, Predicate<String> predicate) {
    return predicate.test(testString);
}

然后您可以像这样调用它:

代码语言:javascript
运行
复制
check("Some String to test predicate on", s -> s.length() > 10);
票数 5
EN

Stack Overflow用户

发布于 2014-08-13 16:47:08

如果lambda返回boolean,则可以使用Predicate

代码语言:javascript
运行
复制
public static boolean check (String s, Predicate<String> pred)
{
    return pred.test(s);
}

或者您可以使用通用的Function

代码语言:javascript
运行
复制
public static Boolean check (String s, Function<String,Boolean> func)
{
    return func.apply(s);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25291720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档