AndroidStudio 3.0:Java 8 流无法编译(调用需要 API 级别 24)

问题描述 投票:0回答:2

Java 8,我安装新的 Android Studio 3.0。

添加代码:

 List<String> myList =   Arrays.asList("a1", "a2", "b1", "c2", "c1");

        myList
                .stream()
                .filter(s -> s.startsWith("c"))
                .map(String::toUpperCase)
                .sorted()
                .forEach(System.out::println);

但是我得到编译错误:

Call requires API level 24 (current min is 15) java.util.stream.Collection
android-studio-3.0
2个回答
15
投票

为了使用 Streams 和其他 Java 8 API 而无需最低 API 级别 24,您需要执行以下操作:

  • 将 Android Gradle 插件升级到 4.0.0 或更高版本

    classpath 'com.android.tools.build:gradle:4.0.0
    
  • 然后将此依赖项添加到您的 build.gradle 文件中:

    dependencies { 
    
       coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.6'
    
       ....
    }
    
  • 最后将其添加到您的 build.gradle 文件中:

    compileOptions {
    
        // Flag to enable support for new language APIs
        coreLibraryDesugaringEnabled true
    
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }
    

享受 Java 8 Streams 和 Time API :)


9
投票

虽然 Android Studio 3.0 中支持大量 Java 1.8(lambda、方法引用、默认接口方法),但并非所有 Android API 都支持所有 1.8。特别是,直到 API 24 才支持

java.util.stream

请参阅开发人员文档:https://developer.android.com/studio/write/java8-support.html#supported_features

StreamSupport 是一个可以向后移植 Java 1.8 库(例如

java.util.stream
)的好库:https://github.com/streamsupport/streamsupport

© www.soinside.com 2019 - 2024. All rights reserved.