无法在android studio中解析Arrays.stream

无法在android studio中解析Arrays.stream,android,android-studio,Android,Android Studio,我试图在Android Studio中使用lambda表达式来 我在编译“无法解析方法流”时出错 其他Lambda表达式(比如单击事件)正在运行,我的应用程序gradle中的目标是java 1.8: compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 incremental = false; } 在File->p

我试图在Android Studio中使用lambda表达式来

我在编译“无法解析方法
流”
时出错

其他Lambda表达式(比如单击事件)正在运行,我的应用程序gradle中的目标是java 1.8:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    incremental = false;
}
File->projectstructure
下,我正在使用嵌入式JDK,即使切换到最新的java8jdk,我仍然会收到错误

有趣的是,如果我切换回版本_1_7,那么我之前工作的lambda语句会给出一个编译错误


如何让这个过滤器在Android Studio中工作?

Java8语言功能和Java8API之间存在差异。Android只支持每一个的一个子集。 lambda是一种Java8语言特性。而流API是Java8API中引入的API

语言功能由编译器实现,可能需要一些API支持,而Java API需要在设备上提供

这意味着您可以将lambdas与minSdkVersion<24的应用程序一起使用,但不能使用流API,因为它只是大于等于24的sdk的一部分


在其他“Java技术”中也有同样的情况。通常,Eclipse编译器的源兼容性为1.8,目标兼容性为1.7,这将允许您使用lambdas,但不允许使用streams(在java7虚拟机上运行时,在java8虚拟机上可以工作)

您的编译器配置中是否有旧的rt.jar?@PaulHicks您能指出我在哪里检查编译器配置吗?Nougat之前的Androids不支持Java 8。@SergeyGornostaev为什么Lambda可以工作?
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    incremental = false;
}