Avatar ·

为什么 Kotlin 需要 companion object 以及它如何替代 Java 中的 static 字段?

大家好!我最近从 Java 开始学习 Kotlin,遇到了一些困惑。在 Java 中,我经常使用 static 字段和方法,例如创建类常量或工厂方法: ```java public class User { public static final int MIN_AGE = 18; public static User createGuest() { return new User("Гость"); } private String name; public User(String name) { this.name = name; } } ``` 在 Kotlin 中,我看到没有 static 关键字,而是使用 companion object。但我不完全理解为什么需要对象,而不是简单的 static。为什么不能像 Java 那样做? 例如,我这样写: ```kotlin class User { companion object { val MIN_AGE = 18 fun createGuest() = User("Гость") } private val name: String constructor(name: String) { this.name = name } } ``` 但我觉得这只是一个多余的包装。这种方法的优势是什么?为什么 Ko