【发布时间】:2016-07-06 20:14:06
【问题描述】:
根据Google's introduction,从Android N开始,Android API应该支持Java流。
但是,使用 Android N 预览版 SDK,我无法在我的项目中使用任何 Stream API(最低配置为 Android N、目标和构建 SDK 版本)。
java.util.stream 包似乎丢失了,我尝试过的所有集合实现的 stream() 方法也是如此。
当前的 SDK 预览版中是否还没有包含必要的类?
【问题讨论】:
-
stackoverflow.com/questions/36000997/android-n-java8-java-time Java 8 的所有功能均不受支持,部分功能仅在预览版中支持。
-
所以Android开发者博文有误?它明确指出“默认和静态方法、流和功能接口——现在也可以在 N 及更高版本上使用”。
-
流 API 不是 Java 8 语言功能(由新的 Jack 编译器实现,可用于早期的 Android 目标)。它将作为 Android SDK 中的一组接口和实现类提供。
-
请区分Java语言、字节码和库特性。例如,Jack(顺便说一句,它已经可用并且工作正常)以向后兼容旧版本的 Dalvik 的方式编译 Lambdas。 (相比之下,“真正的”JDK 使用 Java 7 字节码特性——invokedynamic——和 Java 8 类——LambdaMetafactory 来实现它们。)另一方面,流即使在 android 上也是一个库特性,并且仅对 N+ 可用.
标签: java android lambda android-7.0-nougat