gpt4 book ai didi

java - Java 中的新功能 Lambda 重载

转载 作者:行者123 更新时间:2023-12-01 19:44:01 25 4
gpt4 key购买 nike

我有点困惑为什么没有像 lambda 重载这样的东西。
我知道 lambda 表达式适用于 @FunctionalInterface如果接口(interface)中有两个或多个抽象方法,那么当您使用 lambda 表达式时,编译器无法决定调用哪个函数,因此如果要使用 lambda 表达式,接口(interface)中必须只有一个抽象方法。但是,如果您有两个或多个具有不同参数或不同类型参数或返回类型的函数,那么编译器可以轻松决定调用哪个函数。

例如:

 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中没有这种东西。这不是一件好事吗?

最佳答案

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

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

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

关于java - Java 中的新功能 Lambda 重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54230076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com