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

在嵌套接口中使用Kotlin泛型的问题

在嵌套接口中使用Kotlin泛型的问题

嗨,我来帮你搞定这个泛型嵌套的问题~你遇到的「未解析引用」报错,本质是因为Kotlin里的嵌套接口默认是静态的,没法直接“继承”外层接口的泛型参数T,所以编译器根本找不到这个T的定义。用*通配符虽然能混过编译,但会丢失具体的类型信息,监听器里拿到的events会变成模糊的List<Any?>,完全不符合你要的类型匹配需求。

咱们直接给嵌套的Response接口也加上对应的泛型参数,和外层Sender的T保持一致就可以解决问题了,修改后的代码如下:

interface Sender<T> {
    // 让Response也声明泛型T,和外层Sender的泛型关联起来
    interface Response<T> {
        val success: Boolean
        val events: List<T>
    }

    // 举个例子,发送方法返回对应类型的Response
    fun sendEvents(events: List<T>): Response<T>
}

这样一来,当你实现Sender<String>这类具体的泛型实现时,对应的Response会自动变成Response<String>,events的类型就是List<String>,完美匹配监听器里需要的类型——既保证了类型安全,又能准确传递泛型信息。

简单说下原理:嵌套接口是静态的,它不依赖外层Sender的实例,所以必须自己声明泛型参数才能使用T,不然编译器根本不知道你指的是哪个类型,自然会报错啦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:19:31