当前位置: 首页 > 知识库问答 >
问题:

Android Studio:lambda不工作“复制”

岑光熙
2023-03-14

在尝试使用lambda表达式时,我遇到了一些Gradle构建错误:

错误:(41,100)错误:source 1.7中不支持lambda表达式(使用source 8或更高版本启用lambda表达式)

错误:任务“:app:CompileDebugJava”执行失败。编译失败;有关详细信息,请参阅编译器错误输出。

但在设置模块应用程序源/目标兼容性中,没有“1.8”这样的选项,只有Java1.6或1.7的选项。

我知道我可以管理没有匿名功能,但我仍然想解决这个问题。

共有1个答案

白修谨
2023-03-14

Jack现在已被弃用,未来将把Java8支持集成到当前的工具中。从这篇博客文章来看,Android上Java8语言特性支持的未来:

我们已经决定将对Java8语言特性的支持直接添加到当前的javac和dx工具集中,而不推荐使用Jack工具链。有了这个新的方向,依赖于Java类文件格式的现有工具和插件应该会继续工作。接下来,Java8语言特性将由Android构建系统提供原生支持。我们的目标是在未来几周内推出这款产品作为Android Studio的一部分,我们希望尽早与大家分享这一决定。

新版本的Android Studio(2.1)支持Java8特性。以下是Android Developers blogspot帖子的摘录:

有了Jack编译器,lambdas、方法引用、编译时类型注释、交集类型和类型推断在Android平台的所有版本上都是可用的。默认和静态方法以及可重复注释在Android N和更高版本上可用。

在使用N Developer预览版进行开发时,要使用Java8语言特性,您需要使用Jack编译器。New Project向导[File New Project]为目标为n的项目生成正确的配置。

Android还不支持Java 1.8(最多只支持1.7),所以您不能使用lambdas(正如其中一条评论也提到的)。

如果您想在Android中使用Java 8的主要特性之一lambdas,您可以使用gradle-retrolamba

如果您想了解关于使用gradle-retrolambda的更多信息,下面的答案给出了很多关于使用gradle-retrolambda的细节。

否则(在我看来这可能是最好的选择),您将需要回到使用anonymous classes(即您在改为使用lambda函数之前是如何使用它的)。

 类似资料:
  • 我创建了这段代码,其中大部分代码都是使用toUpperCase,它应该使单词的每个首字母都大写。没有错误,因此我不确定该方法当前为何不起作用。为什么会这样呢。

  • 我有一个SVG图像,带有一些矩形,当鼠标悬停在上面时需要改变颜色。在JSFIDLE中,代码运行良好: https://jsfiddle.net/o8ufaL0h/ 但是在我的网页上,我无法使用hover或onmouseover来处理单个rect。但是,当我在html代码中为完整的img元素添加onmouseover时,它确实可以工作,所以我想这不是img元素的z索引问题。 我真的不知道为什么我不能

  • 请帮助我…每当我启动xammp服务器并尝试启动mysql时,它会出现如下错误。。。

  • 我正在使用泽西开发一个API,并希望将其准备好部署到Google App Engine。但是,当我在Postman上测试时,GET函数有效,但POST函数无效。我只收到一条简短的错误消息,即“错误415不支持的媒体类型”,我无法确定哪里出了问题。 请求资源类 请求服务等级 网状物XML 提前感谢所有帮助我指出并解决问题并回答我问题的人。

  • 我正试图在Android中做一个向后兼容的工具栏,我遵循了多种风格指南中给出的所有建议来尝试和完成这个。然而,它似乎仍然不起作用。风格是这样的: 这是工具栏: 这是onCreate方法的主要活动: 不太确定出了什么问题,因为我遵循了许多消息来源给出的所有说明。这是日志: 我花了几个小时研究这段代码,以及无数的教程和StackOverflow问题,但是毫无用处。如果有人能帮助我,我将不胜感激。提前感

  • 我有三个数组来制作一个tableView和第二个ViewController。一个显示tableView上每个节的标题,一个显示标题,还有一个显示每个单元格的链接。当我构建并点击其中一个单元格时,我会得到: 致命错误:在展开可选值时意外发现nil 在这条线上: 下面是第二个视图控制器代码: