有点美的程序员,最近我冒险进入Kotlin。我将我的静态变量命名为val PREF_NAME = "onb"
,并在android studio中收到了警报
我对此进行了调查,但与Kotlin官方文档相矛盾
常量名称(标有const的属性或没有自定义get函数的顶级或对象val属性,这些属性保存了高度不变的数据)应使用大写的下划线分隔名称:
const val MAX_COUNT = 8
val USER_NAME_FIELD = "UserName"
我缺少什么吗?
答案 0 :(得分:4)
我猜您的属性在一个类中,在这种情况下,它既不是顶级也不是对象值:
class A {
val justAProperty = ""
}
val TOP_LEVEL_VAL_PROPERTY = ""
object B {
val OBJECT_VAL_PROPERTY = ""
}
坦率地说,两者之间的差异很小。除了const val
以外,我始终对所有属性都使用驼峰式大小写,为此我使用大写字母来标记它们的不同性质。
答案 1 :(得分:3)
我认为您正在做的是将val
放在常规班级中,就像这样:
class X {
val PREF_NAME = "onb"
}
通过这样做,您将为类的每个实例赋予一个单独的属性-即使它们都具有相同的值,这与Java术语中的单个静态常量并不完全相同。 / p>
在您引用的文档中,特别是以下部分,列出了将常量放置为仅具有一个实例的位置:
标记为const的属性,没有自定义get函数的顶级或对象val属性
因此这些属性可以是顶级属性(不嵌套在文件中的任何其他内容中):
val PREF_NAME = "onb"
或在object
内:
object X {
val PREF_NAME = "onb"
}
或在同伴对象内:
class X {
companion object {
val PREF_NAME = "onb"
}
}
如果在编译时该属性不变,那么在这里也可以使用const
修饰符标记属性。