在 Kotlin 中,伴生对象( companion object) 是类中的一个特殊对象,它类似于 Java 的静态成员。通过伴生对象,你可以定义一些与类相关的方法或属性,而无需创建类的实例
- Kotlin 没有直接的
static
关键字,但伴生对象提供了类似的功能
可以把伴生对象(companion object)想象成一个“隐藏的单例对象
”,它和类绑定在一起,因为通过类是能够直接访问伴生对象的Companion
。
class User private constructor(val name:String){
companion object {
fun createUser(name:String):User{
return User(name)
}
}
// 使用 buildString 生成 toString
override fun toString(): String = buildString {
append("User(name='")
append(name)
append("')")
}
}
fun main() {
val user = User.createUser("pkmer")
println(user)
// 直接访问伴生对象
val companion = User.Companion
val john= companion.createUser("John")
println(john)
}
与Java static修饰的方法对比
因为伴生对象是与类绑定在一起的,能够直接访问,其实就像Java中static。只不过中间多了一层伴生的对象而已。
class User{
companion object {
fun hello() = println("我可以调用吗")
}
}
fun main() {
// 直接访问伴生对象
val companion = User.Companion
// 这里通过伴生对象来访问方法,就非常像java static修饰的方法了
companion.hello()
}