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

Kotlin Data类初始化未遵循传参顺序导致参数赋值错误问题咨询

问题结论

该情况不属于Kotlin的预期行为,Kotlin调用构造函数传入位置参数时,会严格按照构造函数定义的参数顺序一一赋值,出现参数错位本质是运行的编译产物、导入的类定义和你当前查看的源码不匹配导致的。

常见原因
  • 构建缓存未清理:你修改过PersonalSignMessage的参数顺序后,没有清理旧的构建缓存,实际运行的字节码还是旧版本的构造函数参数顺序,位置参数就会出现错位。而显式指定参数名时,Kotlin会按照参数名匹配而非位置匹配,所以不受参数顺序变更的影响。
  • 导入类错误:项目中存在多个同名的PersonalSignMessage类,你调用构造函数时导入的是其他包下、参数顺序为(id: Long, address: String, message: String)的同名类,和你当前查看的类定义不一致。显式指定参数名时只要参数名匹配就能正确赋值,所以运行正常。
  • IDE 与运行版本不一致:你本地修改了类定义但未同步构建,调试时IDE展示的是本地最新的源码,实际运行的是旧版本的编译产物,导致你观察到参数错位的现象。
排查方案
  • 完全清理构建缓存后重新编译:如果用Gradle构建可以先执行./gradlew clean,IDE端可以执行「Invalidate Caches / Restart」后再全量构建项目,验证问题是否复现。
  • 检查构造函数调用处的类导入路径,确认和你定义的目标PersonalSignMessage类的包路径完全一致,排除导错类的情况。
  • 检查PersonalSignMessage类是否存在其他重载构造函数,或者有基于位置参数的扩展构造方法,避免调用到非预期的构造实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:18:02