0

我一直在相当密集地使用 Kotlin 而不是 Android。它确实让编程再次变得有趣。尽管如此,在某些情况下(主要是名称应该简短且方便的 util 类),当自动将 Java 转换为 Kotlin 时,我希望可以选择在静态方法上使用 @JvmStatic 而不是将调用者转换为MyClass.Companion.Bar.

也就是说,在某些特定情况下,最好有

public static foo(Barian bar)

转换成

@JvmStatic
fun foo(bar:Barian)

所以我可以从 Java 中维护简短的调用语法:

MyClass.foo(bar)

而不是

MyClass.Companion.foo(bar)

显然,在大多数情况下,我同意这是不礼貌的做法,原因有很多,例如未来的兼容性、非 Kotlin 精神等等,但在少数情况下,它可以使 Java 代码(使用我的类)更短。

4

1 回答 1

0

当您像这样 decalre 您的“静态”方法时,您不需要显式指定 Companion-namespace:

class MyClass {

    companion object {
        fun foo() {}
    }
}

在这种情况下,您仍然可以通过以下方式调用它:

MyClass.foo()

但尽管如此,拥有静态方法并不是 Kotlin 惯用的方式,应该通过使用该语言的其他特性来避免。

于 2017-09-04T07:46:09.713 回答