gpt4 book ai didi

java - lambda 表达式的隐式类型转换

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:24:58 26 4
gpt4 key购买 nike

考虑下面的类:

public void method() {
test(() -> { });
}

void test(Runnable a) {
System.out.println("Test 1");
}

void test(A a) {
System.out.println("Test 2");
}

interface A extends Runnable {

}

调用方法 method() 将导致 Test 2 输出。这意味着,lambda 表达式 () -> { } 被隐式转换为 A。为什么?

最佳答案

这是适用于所有重载的相同标准规则。 Java will choose the most specific applicable method.

这两种方法都接受一个函数式接口(interface)类型的参数。 lambda 表达式

() -> { }

可转换为这两种类型。 ARunnable 的子类,因此更具体。因此选择参数类型为 A 的方法。

关于java - lambda 表达式的隐式类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416662/

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