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

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

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

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

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

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

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

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

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

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

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

Stack Overflow用户

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

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

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

或者您可以使用通用的Function

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

https://stackoverflow.com/questions/25291720

复制
相关文章
Java lambda表达式
lambda表达式是一段可以传递的代码,它的核心思想是将面向对象中的传递数据变成传递行为。
赵哥窟
2018/12/24
6760
Java Lambda表达式
在了解Lambda表达式之前我们先来区分一下面向对象的思想和函数式编程思想的区别 面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用他的方法来解决 函数时编程思想: 只要能获取到结果,谁去做的都不重要,重视的是结果,不重视过程 使用Lambda表达式的目的是为了简化我们的代码 匿名内部类虽然也简化了我们的代码,但是Lambda比他更简单,而且语法也更加少
一只胡说八道的猴子
2020/09/27
5470
Java    Lambda表达式
Java Lambda表达式
Java Lambda表达式是Java8中的新特性。Java lambda表达式是Java进入函数式编程的第一步。因此,Java lambda表达式是可以单独创建的函数,而无需属于任何类。Java lambda 表达式可以像对象一样传递并按需执行。
三分恶
2020/07/20
1.2K0
java lambda表达式
作者:Jakob Jenkov 译者:java达人 来源:http://tutorials.jenkov.com/java/lambda-expressions.html(点击阅读原文前往) Java lambda表达式是Java 8新特性。它是步入Java函数式编程的第一步。因此,Java lambda表达式是创建时不属于任何类的函数。它可以像一个对象一样传递,并按要求执行。 Java Lambdas和单一方法接口 函数式编程通常用于实现事件监听器。Java中的事件监听器通常被定义为带有单个方法的
java达人
2018/01/31
1K0
java lambda表达式
Java lambda表达式
Lambda表达式是 Java8 中最重要的新功能之一。使用 Lambda 表达式可以替代只有一个抽象函数的接口实现,告别匿名内部类,代码看 起来更简洁易懂。Lambda表达式同时还提升了对集合、框架的迭代、 遍历、过滤数据的操作。
HUC思梦
2020/09/03
5810
Java lambda表达式
java Lambda表达式
Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。
仙士可
2023/03/10
5980
java之Lambda表达式
上面的一段代码和之前的除了参数传递方式不同,其他都一样,第一段代码用匿名内部类的方式实现参数传递,第二段代码用Lambda表达式实现参数传递。
说故事的五公子
2019/09/11
5480
【Java 8】Lambda 表达式
Lambda(λ) 表达式是一种在 被调用的位置 或者 作为参数传递给函数的位置 定义匿名函数对象 的简便方法。下面是关于 Lambda 表达式的几个点:
零式的天空
2022/03/27
6320
Java 8 Lambda 表达式
在 Java8Tester.java 文件输入以下代码: Java8Tester.java 文件
IT小马哥
2020/03/18
4420
java中lambda表达式[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156874.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/08
4130
java中lambda表达式[通俗易懂]
Java 8——Lambda表达式
本文内容大部分来自《Java 8实战》一书 前言 在上一篇文章中,我们了解了利用行为参数化来传递代码有助于应对不断变化的需求,它允许你定义一个代码块来表示一个行为,然后传递它。一般来说,利用这个概念,你就可以编写更为灵活且可重复使用的代码了。 但是你同时也看到,使用匿名类来表示不同的行为并不令人满意:代码十分啰嗦,这会影响程序员在时间中使用行为参数化的积极性。Lambda表达式很好的解决了这个问题,它可以让你很简洁地表示一个行为或传递代码。现在你可以把Lambda表达式看作匿名功能,它基本上就是没有声明名
我没有三颗心脏
2018/04/26
1.1K0
Java 8——Lambda表达式
Java--lambda(λ)表达式
在Java引入lambda表达式之前,并不能在Java中传递一个代码段。因为Java是严格的面向对象编程,所以必须构造一个对象,这个对象的类需要有一个方法来包含所需的代码。 Java SE8中加入了lambda表达式来处理代码块,增强Java来支持函数式编程。 lambda表达式的语法: //表达式形式:参数,箭头以及一个表达式 (String first, String second) -> first.length() - second.length() //如果代码要完成的计算无法放在一个表达式中,
SuperHeroes
2018/05/22
1K0
java lambda表达式详解_lambda表达式有什么组成
我们知道,在Java中,接口是不能实例化的,但是接口对象可以指向它的实现类对象。如果接口连实现对象都没有呢?那还可以使用匿名类的方式,如下:
全栈程序员站长
2022/11/18
4330
java lambda表达式详解_lambda表达式有什么组成
浅谈 Java 中的 Lambda 表达式
Lambda 表达式是一种匿名函数,它可以作为参数传递给方法或存储在变量中。在 Java8 中,它和函数式接口一起,共同构建了函数式编程的框架。
浪漫主义狗
2023/09/04
3750
浅谈 Java 中的 Lambda 表达式
java中Lambda表达式的使用
Lambda 表达式是一种匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和名字。
大道七哥
2019/08/23
2.4K0
java中Lambda表达式的使用
22 - lambda表达式对列表进行排序
如果列表元素是字典类型,如何利用lambda表达式对列表进行升序降序排序? # lambda 表达式只有一行代码,并返回该行代码的结果 a = [ {'name': 'Bill', 'age': '40'}, {'name': 'Mike', 'age': '18'}, {'name': 'Johb', 'age': '28'} ] print(a) print(sorted(a, key=lambda x: x['age'])) a.sort(key=lambda x: x[
ruochen
2021/05/23
1.6K0
22 - lambda表达式对列表进行排序
java-接口、lambda表达式
接口中所有方法必须为public 接口中不能定义成员变量,但是可以定义为一个常量(类型为public static final) 不能用new来实例化一个接口,但是允许定义一个接口变量 接口变量必须引用实现了该接口的类对象 同一个类可以同时实现多个接口 接口可以定义default方法,该方法提供了一个默认的实现,实现该接口时可以按需重写该方法 接口中的默认方法可以调用其他任意方法 java-SE8后允许接口定义静态方法 public class InterfaceTest implements Test{
卢衍飞
2023/02/16
5100
Java8__lambda表达式
行为参数化(behavior parameterization)是用来处理频繁更改的需求的一种软件开发模式,可以将一段代码块当做参数传给另一个方法,稍后执行。这样,这个方法的行为就基于那块代码被参数化了。
shirayner
2022/03/11
4060
Java8__lambda表达式
【Java_17】Lambda 表达式
一、函数式编程思想 1. 面向对象思想 * 做一件事情:找一个可以解决这个事情的对象,调用方法完成 2. 函数式编程思想 * 只要可以获取结果,不论是谁完成的。 3. 举例 * 我们上楼,可以走楼梯,也可以坐电梯,还可以爬上去。 - 面向对象:走楼梯方法,坐电梯方法,爬上去方法 - 函数式: 我上去了。 二、Lambda 的标准格式 1. (参数类型 变量名) -> {一些方法} () :与传统方式一样,无参是留空 -> :表示指向 {} :与传统方法一致 2. 示例 //匿名内部类创建线
用户8250147
2021/02/04
3240
点击加载更多

相似问题

Scala使用Java库,利用Java 8中对lambda表达式的支持

262

Java中对lambda表达式的错误转换

13

替换Lambda表达式- Lambda表达式->应该被替换,因为我的Java不支持

10

对lambda函数的Xcode支持

10

Java“此语言级别不支持lambda表达式”

23245
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文