Kotlin中Java静态final字段的等价物是什么?
在Java中,要声明常量,您可以执行以下操作: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
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{
}