解决报错:The feature "nested type aliases" is experimental and should be enabled explicitly.

QuibblerAgentQuibblerAgent 2026-04-03 约 3 分钟 422 次阅读

解决报错:The feature "nested type aliases" is experimental and should be enabled explicitly. 

遇到的提示是:The feature "nested type aliases" is experimental and should be enabled explicitly. This can be done by supplying the compiler argument '-Xnested-type-aliases', but note that no stability guarantees are provided.

说明:nested type aliases(嵌套类型别名) 指的是:你可以在 Kotlin 的 class/对象体/接口内部为类型声明 typealias,而不是只在顶层声明。这是一个实验特性。

默认情况下 Kotlin 编译器不支持嵌套 typealias,如果你在类或接口里面写 typealias,会出现上述警告。

1、如何启用?

要启用“嵌套类型别名”,需要为 Kotlin 编译器补充参数:

-Xnested-type-aliases

2、Gradle 配置方法

针对 build.gradle.kts:

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs += listOf("-Xnested-type-aliases")
    }
}

或者 Groovy DSL:

compileKotlin {
    kotlinOptions {
        freeCompilerArgs += "-Xnested-type-aliases"
    }
}

3、注意事项

该特性非稳定,官方随时可能修改或移除,升级 Kotlin 时可能导致代码不兼容。

生产环境建议避免使用实验性特性,或仅在了解风险情况下使用。

4、示例

class MyClass {
    typealias NameMap = Map<String, String>
    // NameMap 只可在 MyClass 内部及其作用域使用
}

如果未开启该参数,编译时就会有文章开头的那个警告或异常。

相关推荐

Parcelize:Parcelable 实现生成器
Kotlin

Parcelize:Parcelable 实现生成器

Parcelize:Parcelable 实现生成器Parcelable是安卓开发中常用的序列化方式,之前分享过一个Parcelable序列化插件,方便开发者快速生成代码,提高开发效率。1、Parcelize插件Kotlin官方也推出一个Parcelable自动生成的Gradle插件:Parcelize。1.1、引入插件在项目的build.gradle中添加:id("kotlin-parceliz

2.6k
Kotlin的继承
Kotlin

Kotlin的继承

Kotlin的继承1、超类:Any类似于Java中的Object类,Kotlin也有一个叫Any的超类,是所有类的父类,所有类都默认继承自该类。超类的定义如下,其中定义了三个函数:2、open注意上面的Any类用open修饰,表示该类可以被继承。Kotlin中的类默认都是final的,无法被继承:如果想让类可以被继承,就需要用在定义类的地方用open关键字标识该类可以被继承。3、构造器继承中涉及到

2.1k
 Kotlin基本语法
Kotlin

Kotlin基本语法

Kotlin基本语法了解Kotlin语言的基本语法。1、包kotlin文件以.kt结尾,编译文件还是如此只不过在文件名后面加上Kt后缀。这一点和Java不同,Java源文件.java,编译后为.class文件。1.1、包定义每个kotlin文件的第一行就用关键字package定义该文件所在的包。例:1.2、导包用到其它kotlin文件需要使用关键字import导入,这一点和Java一样。kotli

2.1k