Mal*_*ngh 7 variables android access-modifiers kotlin android-studio
package example
class Apple {
val APPLE_SIZE_KEY: String = "APPLE_SIZE_KEY"
}
Run Code Online (Sandbox Code Playgroud)
类:
package example
class Store {
fun buy() {
val SIZE = Apple.APPLE_SIZE_KEY
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
'APPLE_SIZE_KEY'在'example.Apple'中拥有私人访问权限
但官方文档描述了如果我们不指定任何可见性修饰符,public则默认使用.
我的第二个问题是:
为什么会出现上述错误?
cre*_*not 17
您要做的是访问没有实例的类的值.以下是三种解决方案:
package example
object Apple {
val APPLE_SIZE_KEY: String = "APPLE_SIZE_KEY"
}
Run Code Online (Sandbox Code Playgroud)
这样,由于objectKotlin的工作方式,您无需实例化任何内容.
您也可以像这样实例化您的类:
package example
class Store {
fun buy() {
val SIZE = Apple().APPLE_SIZE_KEY
}
}
Run Code Online (Sandbox Code Playgroud)
在此解决方案中,您还有一个对象Apple,但Apple仍被声明为类.
第三个选项是伴随对象,其行为类似于Java中的静态变量.
package example
class Apple {
companion object {
val APPLE_SIZE_KEY: String = "APPLE_SIZE_KEY"
}
}
Run Code Online (Sandbox Code Playgroud)
如果您希望将其作为类级别的属性而不是实例级别的属性,则可以使用伴随对象:
class Apple {
companion object {
val APPLE_SIZE_KEY: String = "APPLE_SIZE_KEY"
}
}
fun useAppleKey() {
println(Apple.APPLE_SIZE_KEY)
}
Run Code Online (Sandbox Code Playgroud)
您当前拥有的是一个实例属性,可以像这样使用:
fun useInstanceProperty() {
val apple = Apple()
println(apple.APPLE_SIZE_KEY)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10148 次 |
| 最近记录: |