Avatar ·

Kotlin中的静态方法和变量:如何替代Java的static?

你好!我正在从Java迁移到Kotlin,遇到了一个问题。在Java中,我经常使用静态方法和变量来创建工具类、常量或工厂方法。例如,下面是一个简单的Java类: ```java public class MathUtils { public static final double PI = 3.14159; public static double square(double x) { return x * x; } } ``` 我尝试在Kotlin中编写相同的代码,但编译器在使用`static`关键字时报错。我了解到Kotlin没有直接的`static`,但有一些“companion objects”。我尝试了: ```kotlin class MathUtils { companion object { val PI = 3.14159 fun square(x: Double): Double = x * x } } ``` 这可以工作,但有几个问题让我困惑: 1. 为什么需要写`companion object`而不是直接使用`static`? 2. 是否可以不创建类实例就调用这些方法,就像在Java中一样(`MathUtils.square(5.0)`)? 3. 是否有更简