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
为了使用 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 :)
虽然 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