在Kotlin中,Void返回类型是什么意思?

29

我尝试在Kotlin中创建无返回值的函数。我按照Java的写法用Kotlin语法编写了一个函数。

fun hello(name: String): Void {
    println("Hello $name");
}

我遇到了一个错误

错误:在具有块体('{...}')的函数中需要 'return' 表达式

经过几次更改后,我得到了一个带有可空 Void 返回类型的可工作函数。但这并不完全是我所需的。

fun hello(name: String): Void? {
    println("Hello $name");
    return null
}
根据 Kotlin 文档,Unit 类型对应于 Java 中的 void 类型。因此在 Kotlin 中,正确的不返回值的函数应该是: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html
fun hello(name: String): Unit {
    println("Hello $name");
}

或者

fun hello(name: String) {
    println("Hello $name");
}

问题是:Kotlin中的Void是什么意思,如何使用它以及使用它的优点是什么?


相关:函数中返回 Unit 的目的是什么 - AlikElzin-kilaka
2个回答

36

Void 是 Java 中的一个对象,表示“什么也没有”的意思。在 Kotlin 中,有专门的类型代替'nothing':

  • Unit -> 取代了 Java 中的 void
  • Nothing -> “永不存在的值”

现在在Kotlin中你可以引用 Void, 就像你可以从Java中引用任何类一样,但是你真的不应该这样做。相反,使用 Unit。另外,如果你返回的是Unit,则可以省略它。


7
Void(实际上是:java.lang.Void)在Java中不是一个对象,而是一个。你不能创建此类的实例。 - Jesper
@Jesper 你可以返回 null - Paul Stelian

33

Void是一个普通的Java类,在Kotlin中没有特殊含义。

与此相同,您可以在Kotlin中使用Java类Integer(但应使用Kotlin的Int)。您正确地提到了两种方式不返回任何内容。因此,在Kotlin中,Void是“某物”!

您收到的错误消息告诉您这一点。您指定了(Java)类作为返回类型,但在块中未使用return语句。

如果您不想返回任何内容,请遵循以下方式:

fun hello(name: String) {
    println("Hello $name")
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接