我认为在Kotlin,Unit
相当于Void
。使用Vert.x服务发现时,无法将Future<Unit>
传递给unpublish(String id, Handler<AsyncResult<Void>> resultHandler)
(提供类型不匹配),但它会毫无问题地接受Future<Void>
。为什么会这样,是否有解决方案,或者我只能使用Void
?
答案 0 :(得分:3)
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文档也说:
只有一个值的类型:Unit对象。此类型对应于Java中的 void 类型。