Kotlin中Java静态最终字段的等价物是什么?

问题描述 投票:82回答:3

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

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

Kotlin的等价物是什么?

java kotlin
3个回答
164
投票

根据Kotlin documentation,这相当于:

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

用法:

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

这也是静态最终属性(带有getter的字段):

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

最后这是静态的最终字段:

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

25
投票

如果你在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
}

7
投票

为了我

object Hello {
   const val MAX_LEN = 20
}

很多样板。我简单地将静态final字段放在我的类之上

val MIN_LENGTH = 10

class MyService{
}
© www.soinside.com 2019 - 2024. All rights reserved.