【问题标题】:cannot resolve method stream()无法解析方法流()
【发布时间】:2016-08-20 07:37:42
【问题描述】:

我正在使用

java version 1.8._101

Android studio 2.1.3

Gradle version 2.14.1

minSdkVersion 15

targetSdkVersion 23

buildToolsVersion '23.0.3'

尝试使用java 8 lambda 表达式过滤arrayList

ArrayList<Object> listObject = ......();
listObject.stream();

但它给了我cannot resolve method stream()

我已经推荐了this

【问题讨论】:

标签: android-studio java-8


【解决方案1】:

2018 年更新:不再支持千斤顶。当前的 Java 8 支持方法可在此处获得: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 api 时,出现错误“调用需要 API 级别 24”。您可以将其隐藏在@TargetApi(24) 后面,但随后需要针对较低 API 级别的替代实现。要不受限制地使用,minSdkVersion 必须为 24

更新 build.gradle 后,确保在外部库下的 Project 视图中显示“Android API 24 Platform”。如果没有,请执行 Tools->Android->Sync Project with Gradle Files

然后能够通过以下测试

@Test
public void testStream() throws Exception {
    assertThat(Arrays.asList(1, 3, 4).stream().reduce(0, (i, j) -> i + j), is(8));
}

【讨论】:

  • 不,我用新项目测试过,list.stream() 在那个项目中。
  • NOTE 插孔不再受支持。当前的 Java 8 支持方法可在此处获得:developer.android.com/studio/write/java8-support.html - 特别有用的是显示 Java8 的哪些部分在哪些 API 级别可用的表格。
猜你喜欢
  • 2020-02-04
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2015-06-10
  • 2019-08-28
  • 2019-10-10
相关资源
最近更新 更多