在 Kotlin 中,伴生對(duì)象(companion object)是一種特殊的單例對(duì)象,它用于為類(lèi)提供靜態(tài)方法和屬性。雖然伴生對(duì)象與類(lèi)的實(shí)例關(guān)聯(lián)在一起,但它不能直接訪(fǎng)問(wèn)類(lèi)的私有成員(private members)。
然而,你可以通過(guò)使用伴生對(duì)象的擴(kuò)展函數(shù)(extension function)來(lái)間接訪(fǎng)問(wèn)類(lèi)的私有成員。擴(kuò)展函數(shù)是一種定義在類(lèi)外部的函數(shù),它可以訪(fǎng)問(wèn)類(lèi)的私有成員。這里有一個(gè)簡(jiǎn)單的例子:
class MyClass {
private val privateValue = "I am private"
companion object {
fun printPrivateValue() {
println("Private value from companion object: $privateValue")
}
}
}
fun main() {
MyClass.printPrivateValue() // 輸出 "Private value from companion object: I am private"
}
在這個(gè)例子中,MyClass
的伴生對(duì)象定義了一個(gè)名為 printPrivateValue
的擴(kuò)展函數(shù),它訪(fǎng)問(wèn)了 MyClass
的私有屬性 privateValue
。在 main
函數(shù)中,我們通過(guò)調(diào)用伴生對(duì)象的 printPrivateValue
函數(shù)來(lái)間接訪(fǎng)問(wèn)私有屬性。