我正在尝试在forEach
循环中访问模型类的RealmList。
尝试:1
realmList.forEach(obj -> { System.out.println("value"+obj.getValue())});
尝试:2
realmList.forEach((ModelClass obj) -> { System.out.println("value"+obj.getValue())});
两次尝试都有错误
java.lang.NoClassDefFoundError:activites.MainActivity $$ LAMBDA $ 1
如何解决此错误?
答案 0 :(得分:2)
List.forEach(
是JDK8中添加的方法。
Android API 24(如在Android 7.0中)有JDK8,以下任何内容都没有JDK8。
因此您需要使用兼容性库而不是JDK8方法,例如this one。
答案 1 :(得分:1)
Retrolambda只提供Java 8的语法,而不是API。因此,仅使用Retrolambda将无法使用新的Date& Time API,Streams API等。如果要在Android中使用新的Java 8 API,除了Retrolambda之外,还必须添加其他库。非常好的Stream API端口位于https://github.com/aNNiMON/Lightweight-Stream-API
此外:如果您想在Android中使用最新的Java 8 Date API,您可以使用此端口:http://www.threeten.org/threetenbp/
修改强>
我的印象是我之前的答案并非100%明确。您现在的问题是您想要使用在Android SDK中使用的Java 7中不可用的ArrayList.forEach方法。 Android Studio显示此类完成,因为它认为您使用的是Jack编译器,并且这些API可用。但您需要忽略它并使用Java 8 API端口之一或切换到Jack编译器,它允许您使用Java 8语法和API而不使用Retrolambda。