gpt4 book ai didi

java - Callable 作为功能接口(interface)与 lambdas

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:27 24 4
gpt4 key购买 nike

我只是在学习新的 java8 特性。这是我的问题:

为什么不允许使用Callable<Void>作为 lambda 表达式的功能接口(interface)? (编译器提示返回值)而且使用 Callable<Integer> 仍然是完全合法的那里。这是示例代码:

public class Test {
public static void main(String[] args) throws Exception {
// works fine
testInt(() -> {
System.out.println("From testInt method");
return 1;
});

testVoid(() -> {
System.out.println("From testVoid method");
// error! can't return void?
});
}

public static void testInt(Callable<Integer> callable) throws Exception {
callable.call();
}

public static void testVoid(Callable<Void> callable) throws Exception {
callable.call();
}
}

如何解释这种行为?

最佳答案

对于 Void 方法(不同于 void 方法),您必须返回 null

Void 只是一个占位符,表明您实际上没有返回值(即使构造——如此处的 Callable——需要一个)。编译器不会以任何特殊方式处理它,因此您仍然必须自己放入“正常”返回语句。

关于java - Callable<Void> 作为功能接口(interface)与 lambdas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24381302/

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