【问题标题】:How can I create "static" method for enum in Kotlin?如何在 Kotlin 中为枚举创建“静态”方法?
【发布时间】:2015-04-29 11:16:01
【问题描述】:

Kotlin 已经有许多用于枚举类的“静态”方法,例如 valuesvalueOf

例如我有枚举

public enum class CircleType {
    FIRST
    SECOND
    THIRD
}

如何添加random(): CircleType等静态方法?扩展函数似乎不适用于这种情况。

【问题讨论】:

    标签: enums static kotlin


    【解决方案1】:

    就像任何其他类一样,您可以在枚举类中定义类对象:

    enum class CircleType {
      FIRST,
      SECOND,
      THIRD;
      companion object {
         fun random(): CircleType = FIRST // http://dilbert.com/strip/2001-10-25
      }
    }
    

    然后你就可以将这个函数调用为CircleType.random()

    编辑:注意枚举常量条目之间的逗号,以及伴随对象之前的结束分号。现在两者都是强制性的。

    【讨论】:

    • 如果您希望它作为静态方法在 Java 中可见,您还需要使用 [platformStatic] 对其进行注释。
    • 现在你需要使用@JvmStatic kotlinlang.org/docs/reference/…
    • 如果你真的想用Java,就用@JvmStatic,否则就是浪费资源
    • 只有当您从 Java 代码而不是 Kotlin 访问方法时,才需要 Companion 引用。
    • @SiamakSiaSoft 是的,我同意,这就是我写的原因:使用 @JvmStatic 如果你真的想使用 Java
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2021-12-13
    • 2014-06-01
    相关资源
    最近更新 更多