Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java中Lambda重载的新特性

Java中Lambda重载的新特性
EN

Stack Overflow用户
提问于 2019-01-16 22:20:27
回答 1查看 142关注 0票数 0

我有点不明白为什么没有像lambda这样的过载。

我知道lambda表达式与@FunctionalInterface一起工作,如果接口中有两个或多个抽象方法,那么编译器就无法决定在使用lambda表达式时调用哪个函数,因此如果要使用lambda表达式,必须在接口中只有一个抽象方法。但是,如果有两个或多个具有不同参数或不同类型的参数或返回类型的函数,而编译器可以轻松地决定调用哪个函数,该怎么办?

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 interface Foo{
     void show(String message);
     void count(int number);
 }

 // Calling with lambda (Syntax is not correct)
 x -> "Example Message";  // It should need to call void show();
 x -> 7; // It should need to call void count();

为什么这类东西在java中不可用。这不是件好事吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-16 22:26:56

您已经考虑了问题的一个方面-- lambda表达式应该对应哪个方法。您没有考虑的是接口中的所有其他方法都发生了什么。

可以指定语言,以便lambda表达式对应于一个方法,而所有其他方法都抛出一个RuntimeException --但是这很少有用。考虑如何使用Foo。最后,您将得到一个只能调用某些方法的对象,而且您甚至不知道可以安全地调用哪些方法。

如果您知道只调用一个方法(例如,示例中的count ),那么这是一个独立的功能,并且可以单独封装在一个接口中-此时,现有的lambda表达式功能就可以了。如果你不知道你只想使用单一的方法,那么你的建议无论如何也不会有帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54230076

复制
相关文章
java8新特性lambda
Consumer(消费者) 消费者的Lambda表达式为(e)->{logger.info(e)}
用户9347382
2022/02/28
3650
Java8新特性: Lambda helloworld
Java 8 (又称为 jdk 8 ) 是java语言开发的一个主要版本,Java8是 oracle 公司 2014 4月发布的,可以看成自java5 以来最具革命性的版本,Java 8 为java 语言,编译器,类库,开发功能与JVM带来了大量的新特性
冷环渊
2021/12/12
2530
Java 8 新特性|Lambda使用范例
在 Java 8 之前,在 lambda 表达式出现前,要实现 Runnable 线程,我们需要定义一个实现 Runnable 接口的类来获取 Runnable 对象。
Java小技巧
2022/05/23
2240
Java新特性:Lambda表达式
Lambda 表达式(Lambda expression),也可称为闭包(Closure),是 Java(SE)8 中一个重要的新特性。
栗筝i
2023/10/16
3120
Java新特性:Lambda表达式
java8新特性中lambda表达式的使用
最近工作中使用到了lambda表达式,不是很理解,就去学习了一下,通过了解发现真的特别好用。就像下面这样,几行代码完成了java8之前很多行才能完成的任务量。下面的代码是基于groovy语言实现的,这次主要通过举例总结一下java8中lambda的新特性,文章最后拿在公司一个业务场景进行实战,给小伙伴提供一个使用lambda表达式迅速解决现实问题的思路。
jiankang666
2022/05/12
6220
Java8新特性——Lambda表示式
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。 ☠️每日毒鸡汤:放心,闭上眼,睡一觉,反正明天也不一定比今天好。 1.1 Java8的新特性 1.2 Java8新特性的特点 速度快。 代码更少(增加了新的语法:Lambda表达式)
Java学术趴
2022/08/09
6100
Java8新特性——Lambda表示式
Java 8 新特性|Lambda表达式
从Java8出现以来lambda是最重要的特性之一,它可以让我们用简洁流畅的代码完成一个功能。Lambda 表达式是函数式编程的的一个重要特性,标志着 Java 向函数式编程迈出了重要的第一步。
Java小技巧
2022/05/23
2650
Java 8 新特性|Lambda表达式
java8新特性Lambda和Stream
Java8出来已经4年,但还是有很多人用上了jdk8,但并没用到里面的新东西,那不就等于没用?jdk8有许多的新特性,详细可看下面脑图 我只讲两个最重要的特性Lambda和Stram,配合起来用可以极
KEN DO EVERTHING
2019/01/17
5660
Java8新特性:Lambda表达式
下面举例演示java.util.Comparator<T> 接口的使用场景代码,其中的抽象方法定义为:
小熊学Java
2023/07/12
1400
Java8新特性:Lambda表达式
Java8新特性--Lambda表达式
Lambda 是一个匿名函数,我们可以把Lambda 表达式理解为是一段可以传递的代码(将代码 像数据一样进行传递)。可以写出更简洁、更 灵活的代码。作为一种更紧凑的代码风格,使 Java的语言表达能力得到了提升。
别团等shy哥发育
2023/02/25
3840
Java 8 新特性(一)lambda表达式
本文介绍了Java 8中Lambda表达式的用法,包括基本语法、用法示例、注意事项以及高级用法。通过Lambda表达式,我们可以简化线程、比较器、集合操作、函数式编程等方面的代码编写,提高开发效率。
乐百川
2018/01/09
6220
Java 8 新特性(一)lambda表达式
【Java基础】Java8新特性-Lambda表达式
Lambda表达式是Java8中添加的一个新特性,允许把函数作为一个方法的参数,称为“函数式编程”。
全栈开发日记
2022/05/12
1690
【Java基础】Java8新特性-Lambda表达式
java8新特性之Lambda表达式
java8在2014年就推出了,整天喊着8版本稳定,企业都用jdk8,结果8的特性现在才系统的学,罪过罪过啊!此系列博客可能3-4篇,带你全面地了解java8新特性。
用户8902830
2021/08/12
3050
java8新特性之Lambda表达式
Java8新特性之Lambda与Stream流
   Java 8 API添加了一个新的抽象称为流Stream,stream是用于对集合迭代器的增强,使之能够更高效的完成聚合操作(筛选、排序、统计分组)或者大批量数据操作。    元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。
程序员云帆哥
2022/05/12
3600
Java8新特性之Lambda与Stream流
01-Java8新特性 Lambda 表达式
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样传递),可以写出更简洁,更灵活的代码,作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升.
彼岸舞
2021/12/14
2590
01-Java8新特性 Lambda 表达式
Java8新特性——Lambda表达式(一)
1. 预备知识 在了解Lambda表达式之前首先需要了解以下预备知识。 1.1 如何成为一名高级码农? 如果老板让你写一个用于毁灭地球的函数,而你写了一个毁灭行星的函数,若要毁灭地球只需将毁灭地球的过程传递给“毁灭行星”。能做到这一点,你就是一名高级码农。 以上这个问题体现了程序可扩展性的思想。总结一下,要成为一名高级码农,在编码的时候要以发展的眼光看待问题。一个具体问题到来的时候,你需要基于当前问题抽象出解决这一类问题的办法,那么当相似的问题到来时,你只需花少量的时间就能完成任务,而且避免了代码复制,降
大闲人柴毛毛
2018/03/09
8290
Java8新特性(1):Lambda表达式
Lambda表达式可以理解为一种匿名函数:没有名称,但有参数列表、函数主体、返回类型。它是行为参数化的一种实现,行为参数化是指将不同的行为作为参数传递给方法,方法的所具备的能力取决于它接收的行为参数。使用Lambda表达式使我们不必为这些行为去编写一堆固定的实现类就能应对不断变化的需求,在1.8之前,可以使用匿名内部类的方式达到相同的效果,只是相对于Lambda表达式来说,匿名内部类的方式会显得啰嗦。
布禾
2020/10/29
3210
java8新特性(一):Lambda表达式
Lambda 是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
周三不加班
2019/09/03
3980
java8新特性(一):Lambda表达式
Java8新特性之lambda表达式
3.JDK8对于集合操作(引入java.util.stream.Stream,默认方法+函数式接口作为参数+lambda表达式)
编程随想曲
2022/04/21
2020
点击加载更多

相似问题

Java 8 Lambda重载

63

java 7中的新特性

72

Java:19:错误Java新特性

70

java 8中的lambda特性是如何工作的?

10

重载函数的特性

142
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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