1

我正在尝试循环访问模型类的 RealmList forEach

尝试: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

我该如何解决这个错误?

4

2 回答 2

2

List.forEach(是JDK8中增加的一个方法。

Android API 24(如在 Android 7.0 中)有 JDK8,下面的任何东西都没有 JDK8。

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

于 2017-01-13T15:26:57.673 回答
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 编译器,它允许您在没有 Retrolambda 的情况下使用 Java 8 语法和 API。

于 2017-01-13T14:11:38.940 回答