kotlin - 找到Kotlin Vertx类型不匹配Future <Unit>预期的Handler <AsyncResult <Void >>

标签 kotlin vert.x kotlin-interop

我以为在Kotlin中,Unit等于Void。使用Vert.x Service Discovery,无法将Future<Unit>传递给unpublish(String id, Handler<AsyncResult<Void>> resultHandler)(给出类型不匹配),但是它将毫无问题地接受Future<Void>。为什么会这样,有解决方案吗?还是我只需要使用Void

最佳答案

Unit不等于Void,等效于kotlin中的void

在Java中,void是一个关键字,但是Void是一个类。因此以下代码无法编译:

fun foo():Void{/**need return a Void instance exactly**/}

fun bar():Void{ return Unit; }
//                     ^--- type mismatch error

Java应用相同的规则,例如:
Void canNotBeCompiled(){
  // must return a Void instance exactly.
}

Void foo(){
  return Void.TYPE;
}

Void nil(){
  return null;
}

最后,Unit文档还说:

The type with only one value: the Unit object. This type corresponds to the void type in Java.

关于kotlin - 找到Kotlin Vertx类型不匹配Future <Unit>预期的Handler <AsyncResult <Void >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44773682/

相关文章:

generics - Kotlin泛型Out-projected类型禁止使用

java - 如果用户通过单击同一按钮返回 Activity ,请保持 RecyclerView 适配器复选框处于选中状态[Kotlin]

kotlin - 关闭后忽略协程 channel 的报价

java - 来自 Vertx Web 客户端响应正文的 react 流发布者

rx-java - vert.x 和 RxJava 的区别

java - 如何编写Vertx worker verticle - 无限期阻塞操作?

unit-testing - 如何测试在 Kotlin 中调用顶级函数的代码?

用于 UI 的 Qt 和用于应用程序逻辑的 Kotlin

kotlin - 平台声明与 Comparable 冲突

java - 比较 kotlin 中的两个列表