gpt4 book ai didi

java 8方法引用,允许不兼容的返回类型

转载 作者:行者123 更新时间:2023-12-02 09:23:08 26 4
gpt4 key购买 nike

这是关于方法引用调用,在 lambda 中我们可以对具有不同返回类型的方法进行方法引用。请参阅下面的代码 -

interface Sayable {
void say();
}

class SayableImpl implements Sayable {

@Override
public boolean say() {
// error wrong return type
}
}

public class MethodReference {
public static boolean saySomething() {
System.out.println("Hello, this is static method.");
return true;
}

public static void main(String[] args) {
MethodReference methodReference = new MethodReference();
Sayable sayable = () -> methodReference.saySomething();
sayable.say();

// Referring static method
Sayable sayable2 = MethodReference::saySomething;
sayable2.say();
}
}

这里我们使用 MethodReference::saySomething() 实现 void say() 方法,其返回类型为 boolean

我们如何证明它的合理性?我错过了什么吗?

最佳答案

因为你也可以写

class SayableImpl implements Sayable {
@Override
public void say() {
new MethodReference().saySomething();
}
}

这就是您在使用 lambda 表示它时最终要做的事情

Sayable sayable = () -> methodReference.saySomething()

关于java 8方法引用,允许不兼容的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58528902/

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