【发布时间】:2016-10-27 03:06:47
【问题描述】:
我正在尝试在 Android Studio 中使用 lambda 表达式来filter an array
String[] a = { "s", "", "1", "", "" };
a = Arrays.stream(a).filter(s -> !s.isEmpty()).toArray(String[]::new);
编译时出现错误“无法解析方法stream”
其他 Lambda 表达式(比如点击事件)正在运行,我在我的应用程序 gradle 中针对 java 1.8:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
incremental = false;
}
在File -> Project Stucture下,我使用的是嵌入式JDK,即使我切换到最新的Java 8 JDK,我仍然会收到错误。
有趣的是,如果我将 back 切换到 VERSION_1_7,那么我之前工作的 lambda 语句会出现编译错误。
如何让这个过滤器在 Android Studio 中工作?
【问题讨论】:
-
您的编译器配置中会不会有旧的 rt.jar?
-
@PaulHicks 你能指出我在哪里检查编译器配置吗?
-
Nougat 之前的 Android 不支持 Java 8。
-
@SergeyGornostaev 那么为什么 lambda 会起作用?