无法初始化model.Products的对象解析器,找不到可接受的构造函数

我跟随Anko的无压力SQLite学习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" 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 

请告诉我为什么以及如何解决它

classParser<T>()的这部分的实现看起来像

 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 ,必须是公共的,并且必须具有适用的参数类型。 乍一看,一切看起来都很好,但是你可能能够通过去除单个参数来测试哪些部分是错误的,直到它工作。

此外,也许不相关,示例在同伴内定义了val Book.COLUMN_ID = "id" ,而您只定义了val COLUMN_ID = "id" 。 第一个是扩展属性,而你的是伴侣对象的属性。