com.google.firebase.database.DatabaseException:类java.lang.Class具有通用类型参数,请改用GenericTypeIndicator

时间:2019-12-30 15:58:18

标签: firebase kotlin firebase-realtime-database

我正在为我的android应用程序使用firebase,每当我尝试将dataSnapshot转换为对象时,都会出现以下错误:

com.google.firebase.database.DatabaseException: Class java.lang.Class has generic type parameters, please use GenericTypeIndicator instead

这是我的课程:

class DatabaseApi<T> {

    suspend fun getData(path: String): DatabaseResult<Class<T>?> {
        val databaseResult = DatabaseHelper().get(path)

        return try {
            convertDatabaseSnapshot(databaseResult.value)
        } catch (e: Exception) {
            DatabaseResult.failed(e.toString())
        }
    }

    fun <T> convert(cls: Class<T>, snapShot: DataSnapshot): DatabaseResult<T?> {
        return try {

            val data = snapShot.getValue(cls)
            DatabaseResult.success(data)
        } catch (e: Exception) {
            val message = e.message ?: ""
            DatabaseResult.failed(message)
        }
    }

    inline fun <reified T> convertDatabaseSnapshot(snapShot: DataSnapshot): DatabaseResult<T?> {
        return convert(T::class.java, snapShot)
    } 
}

这是我得到错误的代码:

val data = snapShot.getValue(cls)

0 个答案:

没有答案