首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RealmList的Retrolambda

使用RealmList的Retrolambda
EN

Stack Overflow用户
提问于 2017-01-13 13:00:50
回答 2查看 329关注 0票数 1

我试图在RealmList循环中访问模型类的forEach

尝试: 1

代码语言:javascript
复制
realmList.forEach(obj -> { System.out.println("value"+obj.getValue())});

尝试: 2

代码语言:javascript
复制
realmList.forEach((ModelClass obj) -> { System.out.println("value"+obj.getValue())});

在两次尝试中我都犯了错误

java.lang.NoClassDefFoundError:activites.MainActivity$$Lambda$1

如何解决此错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-13 14:11:38

Retrolambda只是提供Java 8的语法,而不是API。因此,仅使用Retrolambda就无法获得新的日期和时间API、Streams API等。如果您想在Android中使用新的Java8API,那么除了Retrolambda之外,还必须添加额外的库。非常好的Stream端口在https://github.com/aNNiMON/Lightweight-Stream-API

此外,如果您想在Android中使用最新的Java8dataapi,可以使用以下端口:http://www.threeten.org/threetenbp/

编辑

我有一种印象,我以前的回答不是百分之百清楚。您现在的问题是要使用Java7中不可用的ArrayList.forEach方法,而Java7是在Android中使用的。Android会显示这样的完成情况,因为它认为您正在使用Jack编译器,并且这些API是可用的。但是您需要忽略这一点,使用Java8API中的一个端口或切换到Jack编译器,它允许您使用Java 8语法和API而不使用Retrolambda。

票数 1
EN

Stack Overflow用户

发布于 2017-01-13 15:26:57

List.forEach(是在JDK8中添加的方法。

Android 24 (在Android7.0中)有JDK8,下面的任何东西都没有JDK8。

因此,您需要使用兼容性库,而不是JDK8方法,比如这一个

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41635237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档