【Kotlin-Room】 cannot pick a constructor since multiple constructors are suitable
生活随笔
收集整理的這篇文章主要介紹了
【Kotlin-Room】 cannot pick a constructor since multiple constructors are suitable
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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,以上。
總結,
總結
以上是生活随笔為你收集整理的【Kotlin-Room】 cannot pick a constructor since multiple constructors are suitable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript---解决单击、双击
- 下一篇: Ubuntu18.04 WPS安装后,提