【问题标题】:Java 8 Stream API in Android NAndroid N 中的 Java 8 Stream API
【发布时间】: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


【解决方案1】:

它还没有在当前预览中,但它已经被合并到 AOSP Git master 中。看这里https://android.googlesource.com/platform/libcore/+/916b0af2ccdd1bdfc0283b1096b291c40997d05f

编辑:

为了避免可能的混淆:2016 年 3 月,当 OP 提出这个问题时,Android N 开发人员 preview-1 是现在称为 Android 7.0“Nougat”的唯一公开版本。

preview-1 构建实际上不包括 Java 8 Stream API,但它在开发人员 preview-2 构建之后不久(一个月后)被添加。

因此,Android 7.0 API 级别 24确实现在支持 Java 8 Stream API。

【讨论】:

  • 请更新您的答案 - 流 API 包含在最新版本的 Android 7.0 SDK 平台 (API 24) 中。
猜你喜欢
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 2017-02-12
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多