我對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