Kotlin中Int类型为何无法直接调用length?遇未解析引用错误解析
Kotlin中"Unresolved reference 'length'"错误解析
问题场景
在Kotlin代码中尝试直接调用Int?类型变量的length属性时,出现Unresolved reference 'length'错误。
错误代码
fun main(){ val box= Box() box.x=100 } class Box{ var x:Int?=null set(value) { if(value.length>1){ println(value) }else{ println("it can not be empty") } } }
修改后正常运行的代码
fun main(){ val box= Box() box.x=100 } class Box{ var x:Int?=null set(value) { if(value.toString().length>1){ println(value) }else{ println("it can not be empty") } } }
原因说明
x的类型是Int?(可空整数类型),Kotlin里的整数类型本身根本没有length这个属性——length是字符串(String)类型独有的,用来获取字符串的字符个数。- 调用
value.toString()后,会把整数转成对应的字符串(比如数字100会变成字符串"100"),这时这个字符串对象就有length属性了,代码自然能正常运行。 - 你应该是想判断数字的位数,转成字符串再取长度是实现这个需求的合理路子,毕竟整数本身不存在“长度”一说,只有变成字符串后才能统计它的字符数量。
内容的提问来源于stack exchange,提问作者Mufees Mhd
相关产品推荐
相关产品推荐

