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

pde*_*eva 103 java kotlin

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

class Hello  {
 public static final int MAX_LEN = 20;
}
Run Code Online (Sandbox Code Playgroud)

Kotlin的等价物是什么?

Rus*_*lan 186

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

class Hello {
    companion object {
        const val MAX_LEN = 20
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

fun main(srgs: Array<String>) {
    println(Hello.MAX_LEN)
}
Run Code Online (Sandbox Code Playgroud)

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

class Hello {
    companion object {
        @JvmStatic val MAX_LEN = 20
    }
}
Run Code Online (Sandbox Code Playgroud)

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

class Hello {
    companion object {
        @JvmField val MAX_LEN = 20
    }
}
Run Code Online (Sandbox Code Playgroud)


Gar*_* LO 31

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

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

}
Run Code Online (Sandbox Code Playgroud)

if Hello是纯单例对象

object Hello {
  val MAX_LEN = 1 + 1
}
Run Code Online (Sandbox Code Playgroud)

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

object Hello {
  const val MAX_LEN = 20
}
Run Code Online (Sandbox Code Playgroud)

如果要在Java中使用它,请添加@JvmStatic注释

object Hello {
  @JvmStatic val MAX_LEN = 20
}
Run Code Online (Sandbox Code Playgroud)


Sim*_*wig 9

为了我

object Hello {
   const val MAX_LEN = 20
}
Run Code Online (Sandbox Code Playgroud)

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

val MIN_LENGTH = 10

class MyService{
}
Run Code Online (Sandbox Code Playgroud)

  • 在不需要常量在文件外部公开的情况下(例如,java的“ private”),此定义最为简洁。 (2认同)