我有一个与以下代码相关的问题:
fun main() {
println(Char.SIZE_BYTES)
val x = 'x'
println(x.SIZE_BYTES)
}
第一个print语句运行良好,并且正确地打印出2,但是第二个语句会导致编译错误,未知的引用=SIZE_BYTES.Val x是一个字符,为什么我不能在它上面使用SIZE_BYTES呢?
编译错误:未解析引用:SIZE_BYTES
我有一个与以下代码相关的问题:
fun main() {
println(Char.SIZE_BYTES)
val x = 'x'
println(x.SIZE_BYTES)
}
第一个print语句运行良好,并且正确地打印出2,但是第二个语句会导致编译错误,未知的引用=SIZE_BYTES.Val x是一个字符,为什么我不能在它上面使用SIZE_BYTES呢?
编译错误:未解析引用:SIZE_BYTES
伴随对象的函数和属性并不也是该类的每个实例的函数和属性.当你呼叫Char.SIZE_BYTES
时,它实际上是Char.Companion.SIZE_BYTES
的简写语法.
Char.Companion
是companion object
.它是与Char
不同的类别,携带与Char
相关的数据,但它本身不是Char
,Char
也不是Char.Companion
.
object
是一个没有构造函数的类,它在第一次被引用时会自动实例化.它只有一个实例,您可以直接使用object'
的名称来引用该实例.companion object
是一个object
,允许你省略用它自己的名字来称呼它.您可以只使用其相关类的名称,而不使用.Companion
(未命名时的默认名称)或您已命名的任何名称.