gpt4 book ai didi

java - 使用伴生对象代替静态方法和字段有什么好处?

转载 作者:行者123 更新时间:2023-12-02 08:53:42 24 4
gpt4 key购买 nike

我问自己为什么 Kotlin 使用伴生对象而不是静态方法和字段?是样板的减少吗?我认为用大括号内的所有属性和函数编写伴随对象比每次都编写静态更容易。这是一个例子。

class Hero {
companion object {
private var numberOfHeroes = 0

fun addNewHero() {
numberOfHeroes++
}

fun deleteHero() {
numberOfHeroes--
}

fun getAllHeroes(): Int {
return numberOfHeroes
}
}

init {
addNewHero()
}
}

fun main() {

val h1 = Hero()
val h2 = Hero()

print("Number of heros: ${Hero.getAllHeroes()}") // result is 2
}

但这就是唯一的好处吗?我知道简洁对于 Kotlin 来说非常重要,但我认为还会有更多。

最佳答案

做其中之一没有任何好处(就此而言也没有缺点)。它只是一种语言构造。而且,坦率地说,您应该问伴生对象和扩展函数与静态方法相比有什么好处。

Java 和大多数其他面向对象语言选择在必须只存在一个字段实例的情况下使用静态字段,在以下情况下选择使用静态方法:a) 类的实例无关紧要或不重要,或b)它实际上有点这样做,但是编写静态方法的开发人员无法控制该类,即用户想要扩展现有类的功能,而他/她不是该类的原始作者(提供实用程序-可以这么说)。

后者的示例是 String 类的实用方法,用于检查相关字符串是否为空(仅包含空格或为空)。最终用户无法直接更改 String 类,因此需要编写具有静态方法的实用程序类。在 Kotlin 中,使用扩展函数和/或属性可以完美解决此任务。

关于java - 使用伴生对象代替静态方法和字段有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60622292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com