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

Kotlin中Java静态final字段的等价物是什么?,java,kotlin,Java,Kotlin,在Java中,要声明常量,您可以执行以下操作: class Hello { public static final int MAX_LEN = 20; } Kotlin中的等价物是什么?根据Kotlin,这是等价物: class Hello { companion object { const val MAX_LEN = 20 } } 用法: fun main(srgs: Array<String>) { println(Hello

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

class Hello {
    public static final int MAX_LEN = 20;
}
Kotlin中的等价物是什么?

根据Kotlin,这是等价物:

class Hello {
    companion object {
        const val MAX_LEN = 20
    }
}
用法:

fun main(srgs: Array<String>) {
    println(Hello.MAX_LEN)
}
最后,这是静态最终字段:

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

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

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

}
如果
Hello
是纯单例对象

object Hello {
  val MAX_LEN = 1 + 1
}
如果属性是编译时常量,请添加关键字

如果您想在Java中使用它,请添加注释

object Hello {
  @JvmStatic val MAX_LEN = 20
}
对我来说

这是许多陈词滥调。我简单地把静态的final字段放在我的类上面,如下所示

private val MIN_LENGTH = 10 // <-- The `private` scopes this variable to this file. Any class in the file has access to it.

class MyService{
}

private val MIN_LENGTH=10//第一个示例(带有常量字段)可用于属性。流行案例:声明单个文件中的所有web api路径,并使用以下代码从控制器引用它:“@RequestMapping(path=arrayOf(webpathcontents.MapApiPath))”(Spring引导属性)嗨!您知道这个@JvmField是否仍然是必需的吗?我在android中使用它,它显示了一个lint警告,表示可以使用“const”。我将它改为const,使用它的java类没有任何问题。@LeandroCampo如果您有可变的静态字段,
const val
-编译时常量,那么它仍然是必要的,并且在某些情况下,它肯定可以被用作
@JvmField val
的替代品。如果在运行时计算值,或者它不是基元类型或字符串,则它不起作用。Ref:Kotlin中的val表示只读,这就足够了吗?在不需要将常量暴露在文件之外的情况下(即java的
private
),这一定义是最简洁的。
object Hello {
  @JvmStatic val MAX_LEN = 20
}
object Hello {
   const val MAX_LEN = 20
}
private val MIN_LENGTH = 10 // <-- The `private` scopes this variable to this file. Any class in the file has access to it.

class MyService{
}