2014-10-03 73 views
3

我想知道如果我可以在Android开发接口中使用默认方法。 该功能包含在Java 8中,但我发现Android Java VM尚不支持它。 有没有办法在Android开发中使用默认方法?如果没有,当这个功能可用时,这个功能是否有某种时间轴?当在Android中支持默认方法(Java 8)?

+2

'Android Java VM还不支持它。这个陈述本身回答你的问题。它说**没有**。 – 2014-10-03 07:27:28

+0

@ FrankN.Stein我还试图了解这些是否是这些功能的一些时间表。我已经完善了这个问题。 – 2014-10-03 09:03:08

+0

同样,答案似乎是**否**。 – 2014-10-03 09:05:09

回答

6

关于可用性:我想我们会在Android N中看到默认方法。在AOSP上已经有很多与新的Jack编译器的默认方法相关的测试。请参阅http://bit.ly/1PZoV1A

而今天java.util.function包已合并到ojluni master(包括默认方法和lambda表达式的使用)。

编辑:这是Android N将支持Java 8的官方确认:http://developer.android.com/preview/j8-jack.html 流仍然丢失,但java.util.Spliterator(s)已于昨天被整合。鉴于目前的速度,我预计我们会在五月份看到Stream API。

+1

刚刚合并了java.util.stream包。 – 2016-03-18 13:13:23

2

可能重复:will android java support lambda expression in java 8?

在可能重复的问题,kapep回答了这个(阅读更多详细信息的完整答案):

Android不使用Oracle的Java SE版本,它基于Apache Harmony项目的一部分,所以它甚至不支持Java 7. Harmony不再支持并且不支持1.7。

因此,我认为您可以忘记Oracle Java版本的Android开发新功能,并遵循Android API(不是Oracle版本)。

+2

Android支持API级别19中的Java 7.请参阅[这里](http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7)。 – 2014-10-03 07:55:34

+0

请阅读完整的答案(正如我写的)来理解我自己的答案。 – mithrop 2014-10-03 08:22:12