Kotlin:为默认接口函数返回默认的泛型类型

时间:2019-11-28 15:01:14

标签: generics kotlin

我在接口中定义了一个函数。此函数返回通用值。我希望该值默认为CompletableFuture<Void>,因为在许多情况下,此run()函数什么都不做。我想问题在Java中也是一样。

interface Command<out Payload, CommandResult> {

   fun run(): CompletableFuture<CommandResult>{
       return CompletableFuture.runAsync{}
   }
}

编译器说存在类型不匹配

enter image description here

默认情况下,我们什么也不做,因此CompleteableFuture<Void>的回报很好,而runAsync()可以完成任务。在某些情况下,run()函数将返回一个CompleteableFuture<Car>例如

1 个答案:

答案 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{}
}
相关问题