1

我认为在 Kotlin 中,Unit相当于Void. 使用 Vert.x 服务发现,不可能将 a 传递Future<Unit>unpublish(String id, Handler<AsyncResult<Void>> resultHandler)(给出类型不匹配),但它会Future<Void>毫无问题地接受。为什么会这样,是否有解决方案,或者我只能忍受 using Void

4

1 回答 1

3

Unit不等同于Void,它等同void于 kotlin.

在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 对象。该类型对应于 Java中的void类型。

于 2017-06-27T06:49:05.777 回答