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
答案 0 :(得分:7)
虽然Android Studio 3.0中支持Java 1.8(lambdas,方法引用,默认接口方法),但并非所有Android API都支持1.8。特别是,在API 24之前不支持java.util.stream
。
请参阅开发人员文档:https://developer.android.com/studio/write/java8-support.html#supported_features
使用java.util.stream
来移植Java 1.8库的好库是StreamSupport:https://github.com/streamsupport/streamsupport
答案 1 :(得分:5)
要在不要求最低API级别24的情况下使用Streams和其他Java 8 API,您需要执行以下操作:
将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 APIs:)