为何Kotlin中Char类型实例无法调用SIZE_BYTES属性?
Kotlin中Char实例无法调用SIZE_BYTES的原因
SIZE_BYTES是Char类的伴生对象属性,属于类级别的成员,而非实例成员。这意味着它只能通过Char类名直接访问,不能通过Char类型的实例(比如你的变量x)调用。
Kotlin把基本类型的这类元数据属性(比如占用字节数、位数)设计为类级别的成员,是因为所有该类型实例的这些属性值都是固定的——所有Char实例在JVM上都占用2字节,没必要为每个实例单独存储这个值,放在类的伴生对象里更高效。
如果一定要通过实例关联获取这个值,也可以用反射方式,但完全没必要,直接使用Char.SIZE_BYTES就足够:
fun main() { println(Char.SIZE_BYTES) // 正常输出2 val x = 'x' println(Char.SIZE_BYTES) // 直接用类名访问,结果一致 // 反射方式(不推荐,仅作演示) println(x::class.javaPrimitiveType?.SIZE_BYTES) }
内容的提问来源于stack exchange,提问作者Andrew Haines
相关产品推荐
相关产品推荐

