Kotlin Can';t初始化model.Products的对象解析器,未找到可接受的构造函数
我跟随学习Kotlin,所以我创建了这个类Kotlin Can';t初始化model.Products的对象解析器,未找到可接受的构造函数,kotlin,anko,Kotlin,Anko,我跟随学习Kotlin,所以我创建了这个类 data class Products(val id: Long, val name: String, val description: String, val price: Long, val image: String, val status: String, val type: String ) { companion object { val TABLE_NAME = "gdbl_products"
data class Products(val id: Long, val name: String, val description: String, val price: Long, val image: String, val status: String, val type: String ) {
companion object {
val TABLE_NAME = "gdbl_products"
val COLUMN_ID = "id"
val COLUMN_NAME = "name"
val COLUMN_DESCRIPTION = "description"
val COLUMN_PRICE = "price"
val COLUMN_IMAGE = "image"
val COLUMN_STATUS = "status"
val COLUMN_TYPE = "type"
}
}
在Activity.kt中,我调用:
var rowParser = classParser<Products>() => exception show: Can't initialize object parser for model.Products, no acceptable constructors found
var rowParser=classParser()=>异常显示:无法为model.Products初始化对象解析器,未找到可接受的构造函数
请告诉我为什么以及如何修复它这部分的classParser()
看起来像
val applicableConstructors = clazz.declaredConstructors.filter { ctr ->
if (ctr.isVarArgs || !Modifier.isPublic(ctr.modifiers)) return@filter false
val types = ctr.parameterTypes
return@filter types != null && types.isNotEmpty() && types.all(::hasApplicableType)
}
所以你必须找出,为什么你的构造函数实际上不符合这个要求。它不应该使用varArgs,必须是公共的,并且必须具有适用的参数类型。乍一看,一切都很好,但您可以通过删除单个参数来测试哪些部分是错误的,直到它工作为止
此外,该示例在companion中定义了
val Book.COLUMN\u ID=“ID”
,而您只定义了val COLUMN\u ID=“ID”
。第一个是扩展属性,而您的是伴生对象的属性。我无法定义val Products.COLUMN_ID=“ID”它有例外,Android Studio建议我“将扩展属性初始值设定项转换为getter”最后一部分只是一个注释。也许这个例子是错的。