Kotlin 中 Java static final 字段的等价物是什么?

新手上路,请多包涵

在 Java 中,要声明一个常量,您可以执行以下操作:

 class Hello {
    public static final int MAX_LEN = 20;
}

Kotlin 中的等价物是什么?

原文由 pdeva 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 431
2 个回答

根据 Kotlin 文档,这是等效的:

 class Hello {
    companion object {
        const val MAX_LEN = 20
    }
}

用法:

 fun main(srgs: Array<String>) {
    println(Hello.MAX_LEN)
}

这也是静态最终属性(带吸气剂的字段):

 class Hello {
    companion object {
        @JvmStatic val MAX_LEN = 20
    }
}

最后这是静态的 final 字段:

 class Hello {
    companion object {
        @JvmField val MAX_LEN = 20
    }
}

原文由 Ruslan 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您在 Hello 中有一个实现,请在类中使用 companion object

 class Hello {
  companion object {
    val MAX_LEN = 1 + 1
  }

}

如果 Hello 是纯单例对象

object Hello {
  val MAX_LEN = 1 + 1
}

如果属性是编译时常量,添加一个 const 关键字

object Hello {
  const val MAX_LEN = 20
}

如果你想在Java中使用它,添加 @JvmStatic 注解

object Hello {
  @JvmStatic val MAX_LEN = 20
}

原文由 Gary LO 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题