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

@ExperimentalCoroutinesApi注解重写报错:原因及解决方法咨询

问题解析与修复方案

错误原因

这是Kotlin协程Opt-in注解机制的强制校验错误:当基类的函数/属性标记了@ExperimentalCoroutinesApi(表明这是实验性API,稳定性未达标),Kotlin要求所有重写该成员的子类必须同步添加相同的Opt-in注解,以此确认开发者清楚该API的实验性风险。

另外,如果基类本身没标记这个注解,但你在子类重写时加了,也会触发错误——Opt-in注解的使用必须在基类和子类的对应声明上保持一致。

修复方法

1. 子类同步添加Opt-in注解

如果基类的成员确实是实验性API,直接在子类的重写成员上补上对应注解即可:

import kotlinx.coroutines.ExperimentalCoroutinesApi

open class BaseClass {
    @ExperimentalCoroutinesApi
    open fun experimentalFunc() { /* 基类实现 */ }
}

class SubClass : BaseClass() {
    // Kotlin 1.6+推荐用@OptIn包裹,旧版可直接用@ExperimentalCoroutinesApi
    @OptIn(ExperimentalCoroutinesApi::class)
    override fun experimentalFunc() {
        super.experimentalFunc()
        // 你的子类逻辑
    }
}

2. 移除不必要的注解

如果基类的成员本就不该用@ExperimentalCoroutinesApi,直接删掉基类里的该注解,子类重写时也不用保留相关标记。

3. 全局启用实验性API

要是不想在每个重写处单独加注解,可以全局配置开启该实验性API:

  • 在模块的build.gradle.kts中添加编译参数:
    tasks.withType<KotlinCompile> {
        kotlinOptions {
            freeCompilerArgs += "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi"
        }
    }
    
  • 或者在单个文件顶部添加文件级注解,作用于整个文件内的代码:
    @file:OptIn(ExperimentalCoroutinesApi::class)
    import kotlinx.coroutines.ExperimentalCoroutinesApi
    
    class SubClass : BaseClass() {
        override fun experimentalFunc() { /* 无需单独标记 */ }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:05:19