You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin解构声明引发类型错误:Int变量被识别为String

问题原因及解决办法

你遇到的问题是解构赋值的顺序和User数据类的属性声明顺序不匹配导致的:

  1. 你的User数据类属性声明顺序是:username(String) → name(String) → location(String) → ... → avatar(Int)
  2. 但你在解构时写的是 val (name, username, avatar) = listUser[position],这会按顺序取User的前三个属性:
    • 第一个变量name拿到的是User的username(String)
    • 第二个变量username拿到的是User的name(String)
    • 第三个变量avatar拿到的是User的location(String)
      这就完全和你预期的变量对应关系错位了,所以avatar才会被识别成String类型。

解决办法

有两种简单的修复方式:

方式一:调整解构顺序,忽略不需要的属性

按照User类的属性顺序解构,用下划线_跳过不需要的属性:

val (username, name, _, _, _, _, _, avatar) = listUser[position]

方式二:直接通过对象访问属性(更直观,不易出错)

放弃解构赋值,直接获取User对象后访问对应属性:

val user = listUser[position]
holder.imgAvatar.setImageResource(user.avatar)
holder.tvName.text = user.name
holder.tvUserName.text = user.username

这样就能正确获取到Int类型的avatar属性,解决类型不匹配的问题。

内容的提问来源于stack exchange,提问作者Karrax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:27:28