建议如何在Kotlin中创建常量?命名规则是什么?我在文档里没有找到。
companion object {
//1
val MY_CONST = "something"
//2
const val MY_CONST = "something"
//3
val myConst = "something"
}
或者…?
建议如何在Kotlin中创建常量?命名规则是什么?我在文档里没有找到。
companion object {
//1
val MY_CONST = "something"
//2
const val MY_CONST = "something"
//3
val myConst = "something"
}
或者…?
当前回答
当地常量:
const val NAME = "name"
全局常量:
object MyConstants{
val NAME = "name"
val ID = "_id"
var EMAIL = "email"
}
访问MyConstants。的名字
其他回答
在Kotlin中,当我们声明变量时,有两个选项。'var'或'val'。 遵循变量的命名惯例,我认为我们可以简单地生成“常量”,这意味着我想要一个固定的值分配给一个特定的变量,就像下面的示例代码。
private val tag = "MainActivity"
我认为我们不需要像在Java世界中所做的那样,麻烦地使用大写字母来区分“常量”和变量。
如果你把const val valName = valValue放在类名之前,这样就会创建一个
public static final YourClass。Kt会有公共的静态最终值。
科特林:
const val MY_CONST0 = 0
const val MY_CONST1 = 1
data class MyClass(var some: String)
Java反编译:
public final class MyClassKt {
public static final int MY_CONST0 = 0;
public static final int MY_CONST1 = 1;
}
// rest of MyClass.java
当地常量:
const val NAME = "name"
全局常量:
object MyConstants{
val NAME = "name"
val ID = "_id"
var EMAIL = "email"
}
访问MyConstants。的名字
Kotlin静态和常量值&方法声明
object MyConstant {
@JvmField // for access in java code
val PI: Double = 3.14
@JvmStatic // JvmStatic annotation for access in java code
fun sumValue(v1: Int, v2: Int): Int {
return v1 + v2
}
}
在任何地方访问值
val value = MyConstant.PI
val value = MyConstant.sumValue(10,5)
像val一样,用const关键字定义的变量是不可变的。这里的区别在于,const用于编译时已知的变量。
声明一个变量const很像在Java中使用static关键字。
让我们看看如何在Kotlin中声明一个const变量:
const val COMMUNITY_NAME = "wiki"
用Java编写的类似代码是:
final static String COMMUNITY_NAME = "wiki";
加上上面的答案-
@JvmField可以用来指示Kotlin编译器不生成 getter /setter,并将其公开为字段。
@JvmField
val COMMUNITY_NAME = "Wiki"
静态字段
在命名对象或伴生对象中声明的Kotlin属性 将有静态支持字段,无论是在该命名对象或 包含伴生对象的类。
通常这些字段是私有的,但它们可以通过以下方式之一公开:
@JvmField注释; lateinit修饰语; const修饰符。
更多详情请访问:https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#instance-fields