【发布时间】:2019-11-28 15:01:14
【问题描述】:
我在接口中定义了一个函数。此函数返回一个通用值。我希望这个值默认是CompletableFuture<Void>,因为在很多情况下这个run() 函数什么都不做。我想Java中的问题是一样的。
interface Command<out Payload, CommandResult> {
fun run(): CompletableFuture<CommandResult>{
return CompletableFuture.runAsync{}
}
}
编译器说有一个类型不匹配
默认情况下,我们什么都不做,所以 CompleteableFuture<Void> 返回很好,runAsync() 完成这项工作。在某些情况下,run() 函数将返回 CompleteableFuture<Car>,例如
【问题讨论】:
-
我没有关注这个
run()函数的用途,因为你传递了runAsync一个空的可运行文件。您是否打算允许将 runnable 传递给此函数?runAsync始终返回CompleteableFuture<Void>,因此将返回类型指定为CompletableFuture<CommandResult>是没有意义的。 -
我希望默认情况下,我们什么都不做,所以
Void返回很好,runAsync()可以完成这项工作。在某些情况下,run()函数将返回一个CompleteableFuture<Car>例如