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

Kotlin Android实现DiffUtil时提示Result类需传入一个类型参数报错

报错原因

Kotlin 标准库中默认存在一个泛型类 kotlin.Result<out T>,你自定义的 Result 类和系统类重名,编译器默认优先匹配系统自带的泛型Result类,因此会提示需要传入泛型参数的错误。
之前实现DiffUtil逻辑正常,是因为你之前用的实体类没有和系统内置类重名,没有触发命名冲突。

解决方案

你可以任选以下任意一种方式解决:

  • 指定自定义类的全限定名:写DiffUtil的时候直接带上你自定义Result类的完整包名即可,示例如下(把下面的包名替换成你自己的Result类实际包路径):
private val diffCallback = object: DiffUtil.ItemCallback<com.yourpackage.name.Result>() {
    // 后续实现areItemsTheSame、areContentsTheSame逻辑
}
  • 修改自定义类名:把你自定义的Result类改名,比如改成MovieItem、MediaResult等不会和系统类冲突的名称,后续所有用到该类的地方同步修改即可,这种方式可以彻底避免后续再出现同类命名冲突问题。
  • 导入时使用别名:在文件头部导入自定义Result类时指定别名,之后直接用别名引用即可:
// 导入时指定别名,把包名替换为你自己的实际包路径
import com.yourpackage.name.Result as CustomResult

// 后续使用时用别名即可
private val diffCallback = object: DiffUtil.ItemCallback<CustomResult>() {
    // 后续逻辑
}

内容的提问来源于stack exchange,提问作者Dragos Ciupe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:06:04