Void 返回类型在 Kotlin 中的含义是什么

2022-09-01 16:34:23

我试图在Kotlin中创建不返回值的函数。我用Java编写了一个函数,但使用Kotlin语法

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

我遇到了一个错误

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

经过几次更改后,我得到了以可为 null Void 作为返回类型的工作函数。但这并不完全是我需要的

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

根据 Kotlin 文档,Unit type 对应于 Java 中的 void 类型。因此,在 Kotlin 中没有返回值的正确函数是

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

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

问题是:在 Kotlin 中意味着什么,如何使用它,这种用法有什么好处?Void


答案 1

Void是 Java 中的一个对象,其含义与“无”一样多。
在 Kotlin 中,有专门的“无”类型:

  • Unit->取代了java的void
  • Nothing-> “一个永远不存在的值”

现在在Kotlin中,你可以引用,就像你可以从Java引用任何类一样,但你真的不应该。请改用 。另外,如果返回 ,则可以省略它。VoidUnitUnit


答案 2

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

与在 Kotlin 中使用的方法相同,Kotlin 是一个 Java 类(但应该使用 Kotlin 的 )。您正确地提到了不返回任何内容的两种方法。所以,在 Kotlin 中是“某物”!IntegerIntVoid

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

坚持这一点,如果你不想返回任何东西:

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