You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Retrofit2项目出现Not enough information to infer variable T错误如何解决

问题根因
  • 第一,emptyList1()大概率是你对Kotlin标准库emptyList<T>()的笔误,该函数需要指定泛型参数T才能确定返回的列表类型,你没有指定泛型,编译器无法推断T的类型,就抛出了「Not enough information about variable T」的错误。
  • 第二,你把空列表强转为QuoteModel的逻辑本身就是错误的,空列表是List类型,和QuoteModel没有继承关系,就算编译通过运行时也会直接抛出ClassCastException崩溃。
解决方案

Kotlin没有内置的通用单个空对象实现,针对你的场景有两种可行方案:

方案1:使用可空类型(更推荐)

按ID查询用户本身就存在查不到的场景,返回可空类型更符合业务逻辑和Retrofit的设计习惯。

修改Provider代码:

@Singleton
class QuoteProvider @Inject constructor() {
    // 修正笔误,用标准库emptyList,编译器自动推断泛型为List<QuoteModel>
    var allUsers: List<QuoteModel> = emptyList()
    // 改为可空类型,初始值设为null
    var userById: QuoteModel? = null
}

修改Service代码:

suspend fun getUserById(id:Number): QuoteModel?{
    return withContext(Dispatchers.IO){
        val response = api.getUserById(id)
        // 查不到直接返回null即可
        response.body()
    }
}

方案2:实现空对象模式(适合必须返回非空的场景)

如果你的业务逻辑要求必须返回非空的QuoteModel,可以给QuoteModel预定义一个空对象实例。

先给Model类添加空对象常量:

data class QuoteModel(
    @SerializedName("id") val quote: Number,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String,
    @SerializedName("address") val addrees: String,
    @SerializedName("phone") val phone: String,
    @SerializedName("website") val website: String,
    @SerializedName("company") val company: String,
) {
    // 全局复用的空对象实例,字段按需填默认值
    companion object {
        val EMPTY = QuoteModel(
            quote = -1,
            name = "",
            email = "",
            addrees = "",
            phone = "",
            website = "",
            company = ""
        )
    }
}

修改Provider代码:

@Singleton
class QuoteProvider @Inject constructor() {
    var allUsers: List<QuoteModel> = emptyList()
    var userById: QuoteModel = QuoteModel.EMPTY
}

修改Service报错行:

response.body() ?: QuoteModel.EMPTY
其他注意事项

你代码中api.getAllUUsers()的方法名大概率也是拼写错误,建议核对QuoteApiClient中的接口定义避免后续调用出错。

内容的提问来源于stack exchange,提问作者Manuel Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:18:05