我在接口中定义了一个函数。此函数返回通用值。我希望该值默认为CompletableFuture<Void>
,因为在许多情况下,此run()
函数什么都不做。我想问题在Java中也是一样。
interface Command<out Payload, CommandResult> {
fun run(): CompletableFuture<CommandResult>{
return CompletableFuture.runAsync{}
}
}
编译器说存在类型不匹配
默认情况下,我们什么也不做,因此CompleteableFuture<Void>
的回报很好,而runAsync()
可以完成任务。在某些情况下,run()
函数将返回一个CompleteableFuture<Car>
例如
答案 0 :(得分:1)
我认为您无法完全实现所需的功能,但是可以通过将其分为两个界面来达到目标:
interface Command<out Payload, CommandResult> {
fun run(): CompletableFuture<CommandResult>
// other members
}
interface SimpleCommand<out Payload> : Command<Payload, Void> {
override fun run() = CompletableFuture.runAsync{}
}