首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Studio: List.of()‘调用需要API级别...’

问题背景

List.of() 是 Java 9 引入的一个方法,用于创建一个不可变的列表。然而,在 Android 开发中,由于 Android 平台的版本多样性,某些方法可能并不适用于所有版本的 Android。

基础概念

List.of() 是 Java 9 中的一个静态工厂方法,用于创建一个不可变的列表。这个方法返回的列表是线程安全的,并且不能被修改。

相关优势

  1. 不可变性:不可变列表在多线程环境中更安全,因为它们不会被意外修改。
  2. 简洁性:使用 List.of() 可以更简洁地创建列表,而不需要使用 Arrays.asList() 或其他方法。
  3. 性能:不可变列表在某些情况下可以提供更好的性能,因为它们不需要维护修改操作。

类型

List.of() 可以接受任意数量的参数,并返回一个包含这些参数的不可变列表。它支持基本数据类型和对象类型。

应用场景

在需要创建不可变列表的场景中使用 List.of(),例如:

  • 配置数据
  • 常量集合
  • 函数返回值

问题描述

当你在 Android Studio 中使用 List.of() 时,可能会遇到以下错误信息:

代码语言:txt
复制
'List.of()' requires API level 26 (current min is ...)

这个错误信息表示 List.of() 方法需要 API 级别 26 或更高,而你的项目当前的最小 API 级别低于 26。

原因

Android 平台的每个版本都有不同的 API 级别,某些方法只适用于特定的 API 级别。List.of() 是 Java 9 引入的方法,而 Java 9 对应的 Android API 级别是 26。

解决方法

  1. 提高最小 API 级别: 在 build.gradle 文件中,将 minSdkVersion 设置为 26 或更高:
  2. 提高最小 API 级别: 在 build.gradle 文件中,将 minSdkVersion 设置为 26 或更高:
  3. 使用替代方法: 如果你不能提高最小 API 级别,可以使用 Arrays.asList() 结合 Collections.unmodifiableList() 来创建不可变列表:
  4. 使用替代方法: 如果你不能提高最小 API 级别,可以使用 Arrays.asList() 结合 Collections.unmodifiableList() 来创建不可变列表:

示例代码

代码语言:txt
复制
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ImmutableListExample {
    public static void main(String[] args) {
        // 使用 List.of()(适用于 API 级别 26 及以上)
        List<String> list1 = List.of("item1", "item2");

        // 使用 Arrays.asList() 和 Collections.unmodifiableList()(适用于所有 API 级别)
        List<String> list2 = Collections.unmodifiableList(Arrays.asList("item1", "item2"));

        System.out.println(list1);
        System.out.println(list2);
    }
}

参考链接

希望这些信息对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android studio接口调用_android studio jdk版本

Android 做jni的时候 需要根据native java类生成对应的.h头文件,然后根据.h头文件写cpp文件。...在Android studio 中可以添加自定义工具,将javah指令添加进去 首先我们看下javah的指令格式 由此指令我们知道怎么使用javah指令 例如有java文件 D:\project\Test...intermediates\javac\debug\classes\ -jni -d D:\project\Test\app\src\main\cpp com.example.test 知道指令后,将这个指令添加到android...studio File – Settings – 打开Settings Name: javah 显示的名称 Description: javah 指令详情 Program: javah 指令的路径...这里显示的路径信息是根据你android studio 工程当前打开什么文件,根据这文件展示路径信息的,选择对应路径信息,填入Arguments 里就行 working directory: 指令在哪个路径下执行

1.5K10
  • Android Studio环境查看hide和internal api

    Android开发环境查看hide和internal api 问题背景: 在Android开发环境中,我们经常会看一些Android Framework源码,比如说我们想看一下Toast...到这里,我们想一想,为什么有些api是可以查看到的,有一些却查看不到呢?从网上搜一些,发现是Google为了安全考虑,将hide和internal的api在编译时从android.jar里去掉了。...查看android.jar: 确实没有这些标红的api。...图片3.png 前面说了,Android是开源的,既然是开源的,那我们就可以根据源码编译,把hide和internal的api暴露出来。...这里推荐github上的地址:https://github.com/anggrayudi/android-hidden-api 图片4.png 下载android.jar,放到自定义的目录。

    3.3K80

    调用API之前,你需要理解的LSTM工作原理

    LSTM 是目前应用非常广泛的模型,我们使用 TensorFlow 或 PyTorch 等深度学习库调用它甚至都不需要了解它的运算过程,希望本文能为各位读者进行预习或复习 LSTM 提供一定的帮助。...但是为了做出适当的预测,RNN 需要记住这个语境。相关信息可能会被大量不相关数据从需要的地方分离出来。这正是 RNN 失败的地方! 这背后的原因是梯度消失的问题。...但是如果需要为更重要的事情腾出时间,我们可能会取消某些次要的会议。 但是 RNN 并不能做到这样,为了添加一个新信息,它需要通过一个函数完全地转换当前的信息。...因此我们需要把他「输入」到我们的新闻中作进一步分析。 但是现在所有这些碎片信息都不够在主流媒体上进行报道,因此在一段时间后,我们需要总结这些信息并「输出」对应的结果给我们的读者。...我们使用 Keras,它是一个用于神经网络的高阶 API,并在 TensorFlow 或 Theano 之上工作。因此在进入代码之前,请确保你已安装运行正常的 Keras。好的,我们开始生成文本!

    1.5K40

    Android Studio 自定义快捷键调用外部程序

    Android Studio 还能这样提升工作效率,你不知道? [Android Studio 还能这样提升工作效率,你不知道?]...最近需要对跑在 HAL 层的程序生成的中间结果进行预处理,由于处理过程比较繁琐,索性就在 PC 上做了一款工具来提升效率,然后将工具结合到 IDE 里与应用程序和快捷键搭配使用,省下来的时间还能写写文章...前面主要是在 VS 和 VSCode 折腾环境,现在又换成 Android Studio 有点手生,本文分享一下 Android Studio 自定义快捷键调用外部程序的过程。...自定义快捷键调用外部工具 AS 添加外部工具 Android Studio 左上方选择 File -> Settings -> Tools -> External Tools ,点击 + 添加外部工具:...[add_keymap] 然后输入你喜欢的快捷键(注意不要与其他快捷键冲突): [输入你喜欢的快捷键] 添加完成后,测试快捷键,下面调用成功: [测试快捷键] Android Studio 自定义快捷键调用外部程序就是这么简单

    91570

    【Unity3D】Unity 中使用 C# 调用 Java ③ ( C# 调用 Java 实例 | 进行 Android 工程打包 | Android Studio 中运行 Android 工程 )

    文章目录 一、 C# 调用 Java 实例 二、 重新进行 Android 工程打包 三、 Android Studio 中运行 Android 工程 四、 相关文件说明 C# 脚本 Java 类...在 【Unity3D】Android 打包 ④ ( Android 工程打包 | Unity 中导出安卓工程 | Android Studio 打开 Unity 导出的 Android 工程 ) 博客中将...Unity 项目导出为了 Android 项目 , 并在 Android Studio 中编译并运行了该项目 ; 使用的 C# 脚本 , 是在 【Unity3D】Unity 游戏画面帧更新 ( 游戏物体...Studio 模块准备 | 编译 Android 模块拿到字节码文件 | 拷贝字节码到 Unity 编辑器 ) 准备了要调用Android 模块 , 并且编译得到了字节码文件 , 该字节码文件已拷贝到...Studio 中运行 Android 工程 ---- 使用 Android Studio 打开该 Unity_Project_2 项目 ; 在 华为 手机中 , 运行 Unity 导出的 Android

    1.6K20

    数据工程实践:从网络抓取到API调用,解析共享单车所需要的数据

    但对于单车公司来说,如何确保单车投放在人们需要的地方?大量的共享单车聚集在市中心,且在雨雪等恶劣天气,人们又不会使用。这正是数据工程师可以发挥作用的地方,利用他们的专业技术从互联网中提取和分析数据。...网络抓取与API调用:数据工程的工具箱网络抓取是一种数字化的信息检索方式,它类似于在网络上获取数据的智能助手。...大量的用户在定期更新这些信息,所以只需要专注于选择正确的数据。接下来,以使用BeautifulSoup进行网络抓取为案例。目标是什么?...当然,其他工具如Atom、Visual Studio Code或IntelliJ IDEA也有自己的优势。分步Python指南:抓取数据实践首先,让我们看一下用于推断AAA和XXX数据的代码。...这部分我们采用调用天气预报API的方式来获取数据。下面是我们准备的Python函数。这个简洁的代码片段展示了如何以精炼的方式实现强大的功能,无缝地融合了技术性与易用性之间的隔阂。

    22110

    重走Android路 之 Android系统架构图以及开发工具了解

    例如,我们的App想要发送SMS消息(短信),我们不需要重新去写一个短信的功能,而是直接调用系统提供好的Api去向指定的联系人发送短信,甚至,我们可以设定好短信内容,以便减少用户操作。 2....Android运行时 ---- 对于运行在Android版本5.0(API级别21)或更高版本的设备,每个应用都在其自己的进程中运行,并且拥有自己的Android运行时(ART)实例。...版本5.0(API级别21)之前,Dalvik是Android运行时。...当框架API调用访问设备硬件时,Android系统会自动为该硬件组件加载库模块。 6. Linux内核 ---- Android底层便是Linux内核。...当然还有很多,这就需要各位亲自行发掘了哦~ 下面来看一下在Android Studio中工程结构以及其所代表的含义: Android视图 ---- 默认情况下,Android Studio会在Android

    1.5K20

    第一次使用Android Studio 需要知道的一切配置。

    Studio之前,建议先提前准备好单独的Android SDK,这个可以在AndroidDevTools网站下载。...Android Studio安装完成后,第一次启动AS前,为了避免重新下载新版本的SDK,需要做如下操作: AS启动前,打开安装目录,请先将bin目录的idea.properties文件中增加一行:disable.android.first.run...第一次打开Android Studio时,需要配置JDK和SDK: ? 上图中,选择“Project Structure”,弹出如下界面:(选择JDK和Android SDK的路径) ?...注:不要问我JDK和Android SDK怎么来的吧?JDK需要提前安装好,Android SDK需要提前准备好,这种帖子一搜一大把,大家自行查找。...当然,以后我们在使用Android Studio 的时候,也可以随时修改JDK和Android SDK的路径。

    66410

    Tree Api+ClassScanner = 识别三方隐私权限调用 | Android Lint

    interface ClassScanner : FileScanner { // 需要检查的 node 类型 fun getApplicableAsmNodeTypes(): IntArray...// 和其他lint api 提供的类似 fun getApplicableCallOwners(): List?...这次隐私api的判断因为我们要判断的栈帧方法比较多,比如INVOKEVIRTUAL,INVOKESTATIC这种都有,所以getApplicableAsmNodeTypes这个上面,我们获取了所有的函数调用...然后我们需要做的也很简单,因为我们的输入类型只有MethodInsnNode,所以当checkInstruction就是栈帧调用方法被执行的时候,将call直接转化成MethodInsnNode,之后判断当前栈判断当前方法是不是操作符...,描述符,所有者等都符合我们的隐私api的定义,如果是则调用lint repot就行了。

    59730

    美团外卖Android Lint代码检查实践

    Lint API 简介 为了方便后文的理解,我们先简单看一下Lint提供的主要API。 主要API Lint规则通过调用Lint API实现,其中最主要的几个API如下。...例如: 原生的NewApi,用于检查代码中是否调用Android高版本才提供的API。在低版本设备中调用高版本API会导致Crash。 自定义的SerializableCheck。...Error级别:明确需要解决的问题,包括Crash、明确的Bug、严重性能问题、不符合代码规范等,必须修复。 Warning级别:包括代码编写建议、可能存在的Bug、一些性能优化等,适当放松要求。...但受限于Android Studio对自定义Lint的支持不完善,开发人员IDE的配置不同,需要开发者主动关注报错并修复,这种方式不能完全保证效果。...API HandleException:调用指定API时,需要加try-catch处理指定类型的异常 问题API的匹配,包括方法调用(method)、成员变量引用(field)、构造函数(construction

    2.3K50

    Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用

    KMP使用expect 和 actual 关键字 在 Kotlin Multiplatform 项目中,expect 和 actual 关键字被用于处理不同平台的 API 调用。...这些预期声明不包含实现代码,而是作为平台无关的 API 供共通代码使用。...6、 类型别名: 如果需要使用特定平台的现有类型实现预期声明,可以使用类型别名(typealias)来连接预期声明和平台特定的类型。这在无法直接向平台类型添加 actual 关键字时非常有用。...代码示例 以下是一个使用 expect 和 actual 关键字在 Kotlin Multiplatform 项目中处理不同平台 API 调用的代码示例: 共通代码 (commonMain): // 预期声明...例如,getPlatformName() 函数在 Android 上返回字符串 “Android”,而在 iOS 上返回 “iOS”。

    10610

    Android 应用构建速度提升的十个小技巧

    调试按钮来执行构建,那么无需考虑这个问题,新版本的 Android Studio 会自动检测连接的设备和模拟器,如果系统的 API 级别大于 21 则进行原生的 multidex 支持,同时会忽略工程里对最低...API 级别 (minSdkVersion) 的设置。...习惯通过命令行窗口构建工程的开发者们则需要试着避免这个问题: 配置一个新的 productFlavor,设定工程的最低 API 级别为 21 或者以上,在命令行里调用 assembleDevelopmentDebug...需要注意的是,API 级别 15 及更高可以支持不透明的 WebP 格式图片,如果是透明格式的 WebP,需要 API 级别 18 以及更高。 ?...因此,如果您希望使用 Apply Changes,则需要让您的工程运行在 Android 8.0 (API级别26) 以上的真机或者模拟器上。 小技巧 7: 避免被动的改动 ?

    95330
    领券