4

在 Kotlin 中声明一个“静态”函数是通过以下方式完成的:

companion object {
    fun classFoo() {
        //do something
    }
}

但是我错误地编码

companion object fun classFoo() {
     //do something
}

如果只需要一个静态函数,则期望代码执行相同的操作。

编译器对此没有争论,它似乎是有效的,因为编译器需要一个fun名称和参数。但我从来没有找到如何从其他类调用该函数。

这种形式有companion object fun什么作用?没有可用的文档。

4

1 回答 1

3
class Test {
    companion object fun classFoo() {
        //do something
    }
}

相当于

class Test {
    companion object // Add "{ }" to make it explicit that the object body is empty

    fun classFoo() {
        //do something
    }
}

即具有空伴生对象(这是有效语法)和普通成员函数的类,可按通常方式调用:

Test().classFoo()
于 2019-11-05T20:04:01.853 回答