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

时间:2016-11-01 01:20:56

标签: java kotlin

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

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

Kotlin的等价物是什么?

3 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分: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
}

答案 2 :(得分:7)

对我来说

object Hello {
   const val MAX_LEN = 20
}

是很多样板。我简单地将静态最终字段放在我的类上面,就像这样

val MIN_LENGTH = 10

class MyService{
}