在低版本Android中使用Java Stream功能
一直使用Java8的Stream功能来简化代码,比如如下的操作:
double num = list.stream().filter(t -> !StringUtils.isEmpty(t.字段名)).count();
在Android 11等高版本中没有问题,但运行在Android 6中就报错了,提示:No interface method stream()...
很显然低版本Android并不支持Java Stream功能,为了让其支持该功能,需要做一些额外的设置,官方称为“脱糖”。链接:
在应用模块的build.gradle中添加如下代码同步编译即可:
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4'
}