当前位置: 首页 > 科技观察

如何在AndroidN预览版中使用Java8的新特性

时间:2023-03-15 10:33:28 科技观察

Android团队发布的AndroidNPreview给我们带来了很多改进,包括Jack编译器提供的Java8支持。在本文中,我们将了解它对Android开发人员意味着什么,以及如何尝试新的语言功能。概述在本文中,描述OracleJava8的新特性没有多大意义——互联网上已经有很多信息。另一方面,Android的官方Java8公告给开发人员留下了很多悬而未决的问题,感觉并不是所有原生Java8功能都可用。更详细的技术公告证实了这一点。我们可以根据它们在AndroidN中的可用性将这些语言特性分类如下:AndroidGingebread(API9)及更高版本:Lambda表达式java.util.functionAndroidN及更高版本:默认和静态接口方法可重复注释流(Streams)反射API因此,开发人员必须注意Java8功能与所使用的minSdkVersion之间的关联。我们还必须注意,语言向后兼容性是由Jack编译器提供的。从概念上讲,Jack编译器将javac、ProGuard和dex的功能组合到一个转换步骤中。这意味着没有可用的中间Java字节码,JaCoCo和Mockito等工具将无法工作,DexGuard(ProGuard的企业版)也将无法工作。我们希望这只是一个早期的预览版本,这些问题将在未来得到解决。Lambda表达式和相关的函数式API——这是每个Android开发者都会喜欢的东西。这种功能对于提高代码的可读性非常有用——它取代了提供事件监听器的匿名内部类。以前只能通过额外的工具,或者通过AndroidStudio编辑器折叠代码来实现。默认和静态接口方法可以帮助我们减少额外实用类的数量,但它们显然不是最需要的特性。还有一些我希望更详细地介绍的其他添加内容,因此超出了本文的范围。对我来说最有趣的东西-Java8Streams-在当前预览中不可用。我们可以发现它刚刚被合并到AOSP源代码中,所以期待在下一个NPreview或Beta版本中看到它。如果您真的等不及要浏览-尝试使用Lightweight-Stream-API,目前是一种开源的向后兼容的API。总结在这篇博文中,我们研究了Java8的用例及其在AndroidNPreviewSDK中的当前实现。我们还看到了当前Jack编译器的局限性,以及可能在***发布之前修复的功能。