我对kotlin很新颖,我想知道是否有可能,以及如果违反了最佳实践,从伴随对象中访问伴随对象之外的方法和变量。伴随对象之外的访问方法 - Kotlin
例如
class A {
fun doStuff(): Boolean = return true
companion object{
public fun stuffDone(): Boolean = return doStuff()
}
}
或类似的东西
谢谢
我对kotlin很新颖,我想知道是否有可能,以及如果违反了最佳实践,从伴随对象中访问伴随对象之外的方法和变量。伴随对象之外的访问方法 - Kotlin
例如
class A {
fun doStuff(): Boolean = return true
companion object{
public fun stuffDone(): Boolean = return doStuff()
}
}
或类似的东西
谢谢
doStuff()
是一个类的实例方法;调用它需要一个类实例。伴随对象的成员,就像Java中的静态方法一样,没有范围内的类实例。因此,呼叫从一个同伴对象方法的实例方法,你需要明确提供一个实例:
class A {
fun doStuff() = true
companion object {
fun stuffDone(a: A) = a.doStuff()
}
}
谢谢,所以如果我想以静态方式访问它,我可以把doStuff()放在伴随对象中。但是这会让它公开吗? –
是的,你可以做到这一点。无论您是在类中还是在伴侣对象中定义它们,Kotlin中的所有成员都是默认公开的。如果你不想让它公开,只需添加一个'private'修饰符。 – yole
谢谢,现在很清楚 –
是'doStuff'在顶层或拥有同伴对象的类中定义? – marstran