Room实体类构造函数异常

本案例是Entity无主构造函数,多次构造函数的情况。

异常描述:Room cannot pick a constructor since multiple constructors are suitable. Try to annotate unwanted constructors with @Ignore.

异常源代码:

//创建数据库实体 Entity
@Entity(tableName = "User")//数据库实体类
class User{//主键 自增@PrimaryKey(autoGenerate = true)var id:Int = 0@ColumnInfo(name="user_name") //实际数据库中的字段user_namevar name:String = ""@ColumnInfo(name = "user_gender")var gender:String = ""var age:Int = 0constructor(id:Int,name:String,gender:String,age:Int) {this.id = idthis.name = namethis.gender = genderthis.age = age}constructor(name:String,gender: String,age:Int){this.name = namethis.gender = genderthis.age = age}
}

异常原因:属性有初始值,有两个次构造函数,系统认为这两个都适用,导致系统在创建对象里无法选择构造函数。

解决方案:

方案一,在次构造函数上添加@ignore注解,只保留一个次构造函数不添加。

//创建数据库实体 Entity
@Entity(tableName = "User")//数据库实体类
class User{//主键 自增@PrimaryKey(autoGenerate = true)var id:Int = 0@ColumnInfo(name="user_name") //实际数据库中的字段user_namevar name:String = ""@ColumnInfo(name = "user_gender")var gender:String = ""var age:Int = 0@Ignoreconstructor(id:Int,name:String,gender:String,age:Int) {this.id = idthis.name = namethis.gender = genderthis.age = age}constructor(name:String,gender: String,age:Int){this.name = namethis.gender = genderthis.age = age}
}

方案二,添加主构造函数,可以不带参数的和带参数的,次构造函数得指向主构造函数。下面示例使用不带参数。

//创建数据库实体 Entity
@Entity(tableName = "User")//数据库实体类
class User(){//主键 自增@PrimaryKey(autoGenerate = true)var id:Int = 0@ColumnInfo(name="user_name") //实际数据库中的字段user_namevar name:String = ""@ColumnInfo(name = "user_gender")var gender:String = ""var age:Int = 0constructor(id:Int,name:String,gender:String,age:Int) : this() {this.id = idthis.name = namethis.gender = genderthis.age = age}constructor(name:String,gender: String,age:Int) : this() {this.name = namethis.gender = genderthis.age = age}
}

ok,以上。

总结,

  1. kotlin类,不写主、次构造函数。编译java类会自动生成默认的构造函数
  2. kotlin类,不写主构造函数,写次构造函数。需要保证不能让系统识别多个都适合,编译java类不会自动生成默认主构造函数

【Kotlin-Room】 cannot pick a constructor since multiple constructors are suitable相关推荐

  1. day01【Kotlin基础】从零开始,最美的梦想一定最疯狂

    day01[Kotlin] 前言 0.什么是Kotlin? 中文:靠他灵 Jetbrains发布基于JVM的编程语言 groovy scalaJetbrains是做编译器起家的公司,总部捷克,有圣彼得 ...

  2. 【Kotlin 初学者】字符串常用操作汇总

    作者简介:CSDN博客专家.华为云享专家认证 系列专栏:Kotlin 初学者 学习交流:三人行必有我师焉:择其善者而从之,其不善者而改之. 目录 一.字符串创建 1.1 字符串属性 1.2 字符串函数 ...

  3. 【Kotlin 初学者】Java和Kotlin互操作

    作者简介:CSDN博客专家.华为云·云享专家认证 系列专栏:Kotlin 初学者 五星好评:左侧点一下(网页端),移动端:https://bbs.csdn.net/topics/603956616 目 ...

  4. 【Kotlin 初学者】为什么要学Kotlin

    作者简介:CSDN博客专家.华为云享专家认证 系列专栏:Kotlin 初学者 学习交流:三人行必有我师焉:择其善者而从之,其不善者而改之.

  5. 【Kotlin学习】Kotlin基础知识

    函数与变量 函数 一个普通的函数基本结构 语句和表达式 在kotlin中,if是表达式而不是语句. 语句和表达式的区别 表达式有值,并且能作为另一个表达式的一部分使用 而语句总是包围着它的代码块中的顶 ...

  6. 【Kotlin Flow】 一眼看全——Flow操作符大全

    作者:搬砖小子出现了 转载地址:https://juejin.cn/post/6989536876096913439 Kotlin Flow 基本上可以替代RxJava,其提供了诸多操作符来处理数据. ...

  7. 【Kotlin学习】Kotlin中的反射

    反射:在运行时对kotlin对象进行自省 反射是一种在运行时动态访问对象属性和方法的方式,而不需事先确定这些属性是什么.一般来说当你访问一个对象的方法或者属性时,程序的源代码会因用一个具体的声明,编译 ...

  8. 【Kotlin 初学者】函数(方法)

    作者简介:CSDN博客专家.华为云享专家认证 系列专栏:Kotlin 初学者 学习交流:三人行必有我师焉:择其善者而从之,其不善者而改之. 目录 函数 函数头 函数参数 Unit函数 Nothing类 ...

  9. 【论文导读】- Cluster-driven Graph Federated Learning over Multiple Domains(聚类驱动的图联邦学习)

    文章目录 论文信息 摘要 主要贡献 聚类驱动的图联邦学习 问题定义 联邦聚类 聚类模型 聚类模型的联系 FedCG框架 论文信息 Cluster-driven Graph Federated Lear ...

  10. 【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )

    文章目录 前言 一.Android 命令行与 PC 可执行 JAR 文件不兼容 二.Android 命令行使用 dalvik 命令不能直接执行 Kotlin 编译的 dex 文件 前言 尝试在 And ...

最新文章

  1. 春运渡劫!Python给我抢回家的火车票
  2. Java取当前时间,深夜思考
  3. oracle之4多行函数之分组函数
  4. python代码写入方式_【Python 1-17】Python手把手教程之——文件的读写以及I/O操作...
  5. 解决 Successfully created project '' on GitHub, but initial push failed: Could not read from remote re
  6. idea pom依赖失败_IDEA中Maven依赖下载失败的完美解决方案
  7. 英语学习笔记2019-10-25
  8. 中南林科大c语言程序设计,2017年中南林业科技大学计算机与信息工程学院802C语言与数据结构之C程序设计考研强化模拟题...
  9. Kattis - missinggnomesD Missing Gnomes (思路题)
  10. 海湾汉字编码表全部_海湾5000标准汉字码表设备类型表.xls
  11. 机器人学习笔记(3) 正运动学和逆运动学
  12. Sdk4J.jar安装到本地maven仓库
  13. python风变编程是骗局吗-如何看待风变编程的 Python 网课?
  14. html修改鼠标代码,在HTML页面上更改鼠标光标
  15. linux 添加用户到组命令,linux下添加用户组和用户
  16. 挚爱家乡五常大米的味道
  17. 陕西万德信息科技面试题
  18. 操作系统实验——进程调度 实验报告
  19. 用Python从零复现A星寻路算法 | 手撕代码#1
  20. python做性能测试框架_python常用web框架简单性能测试结果分享(包含dja

热门文章

  1. 电脑桌面便签软件怎么通过便签快捷键快速云同步便签内容?
  2. Android - BGAQRCode 扫描二维码生成二维码
  3. 计算机教室 设备负荷,设备建设标准和规范教室线缆布线.ppt
  4. 西部陆海新通道海铁联运通达中国六省市
  5. 双显卡(Intel+Nvidia)笔记本配置cuda开发环境
  6. java gwt开发_java – 如何启动GWT超级开发模式
  7. Word删除空白页的方法
  8. php下载微信服务器图片
  9. Linux 非源码安装 xrdp
  10. [NULL @ 000002d5c65b5180] missing picture in access unit