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