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

Android Studio使用List.of()报Call requires API level 30错误

问题背景

在Android Studio项目中调用List.of()方法时,会收到如下Lint报错:

Call requires API level 30(current min is 21):`java.util.List#of`

出现该报错的原因是List.of()是Android API 30才加入系统框架的Java集合API,低于该版本的系统默认没有对应实现。

全新解决方案

无需提升minSdk到30,通过开启核心库脱糖功能即可在minSdk 21及以上项目中正常使用List.of()等Java 8+新增API,操作步骤如下:

  • 确认项目使用的Android Gradle插件版本 ≥ 4.0.0
  • 打开App模块的build.gradle文件,在android配置块中添加如下配置:
android {
    // 省略其余已有配置
    compileOptions {
        // 开启核心库脱糖
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    // 项目使用Kotlin的话需要添加以下配置,纯Java项目可以忽略
    kotlinOptions {
        jvmTarget = "1.8"
    }
}
  • 在同一个build.gradle文件的dependencies配置块中添加脱糖依赖:
dependencies {
    // 省略其余已有依赖
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}
  • 同步Gradle配置并重新构建项目,上述Lint报错会自动消失,List.of()可正常运行在API 21及以上的所有设备上。
可选兼容方案

如果你暂时不想开启核心库脱糖,也可以用以下等价的低版本兼容写法实现和List.of()相同的不可变列表效果:

// 可变列表写法
List<String> list = Arrays.asList("a", "b", "c");
// 不可变列表写法(和List.of()效果完全一致)
List<String> immutableList = Collections.unmodifiableList(Arrays.asList("a", "b", "c"));

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

相关产品推荐
方舟 Agent Plan

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

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