Kotlin自定义ChatMessage类构造函数参数不匹配调用报错求助
问题原因
- 次构造函数传参语法错误:Kotlin调用构造函数传递命名参数时需使用等号
=而非冒号:,你当前代码中this(id: "", text: "", fromId: "", timestamp: -1)的写法不符合语法规范,编译器无法识别为合法的参数传递。 - 主构造参数未声明为类属性:主构造函数中的
timestamp参数没有添加val/var修饰符,仅作为构造入参存在,不会成为类的公开成员属性。如果你是使用Firebase、Gson等需要反射构造对象的序列化框架,框架无法匹配到对应字段的构造签名,就会抛出构造函数不匹配的报错。
修正方案
class ChatMessage(val id: String, val text: String, val fromId: String, val timestamp: Long) { constructor() : this(id = "", text = "", fromId = "", timestamp = -1L) } // 更简洁的写法:直接给主构造参数设置默认值,可省略次构造,同时满足序列化框架要求的无参构造能力 // class ChatMessage( // val id: String = "", // val text: String = "", // val fromId: String = "", // val timestamp: Long = -1L // )
内容的提问来源于stack exchange,提问作者PopeLouis
相关产品推荐
相关产品推荐

