我正在使用
java version 1.8._101
Android studio 2.1.3
Gradle version 2.14.1
minSdkVersion 15
targetSdkVersion 23
buildToolsVersion '23.0.3'
尝试使用arrayList
表达式过滤java 8 lambda
,如
ArrayList<Object> listObject = ......();
listObject.stream();
但它给了我cannot resolve method stream()
我已经提到了this
答案 0 :(得分:2)
2018更新:不再支持jack。当前的Java 8支持howto可用于此:https://developer.android.com/studio/write/java8-support.html - 特别有用的是显示Java8的哪些部分可用于哪个API级别的表。
见
build.gradle的关键部分:
android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
...
defaultConfig {
minSdkVersion 24
targetSdkVersion 24
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
使用Stream apis时出现错误&#34;呼叫需要API Level 24&#34;。您可以将其隐藏在@TargetApi(24)
后面,但随后需要针对较低API级别的替代实现。要无限制地使用,minSdkVersion必须达到24
更新build.gradle后,请确保在外部库下的项目视图中,&#34; Android API 24平台&#34;出现。如果没有,请执行工具 - &gt; Android-&gt;使用Gradle文件同步项目
然后能够通过以下测试
@Test
public void testStream() throws Exception {
assertThat(Arrays.asList(1, 3, 4).stream().reduce(0, (i, j) -> i + j), is(8));
}