2017-01-13 6 views
1

forEachループでモデルクラスのRealmListにアクセスしようとしています。Retralambda with 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

@TimCastelijnsはい... retrolambdaはクリックリスナーで動作しましたが、このエラーはRealmListでのみ発生しました。 –

答えて

1

RetrolambdaはAPIではなくJava 8の構文を提供しています。したがって、新しい日付& Retrolambdaを使用するだけでTime API、Streams APIなどを利用することはできません。 Androidで新しいJava 8 APIを使用する場合は、Retrolambdaの他にlibを追加する必要があります。ストリームAPIの非常に素晴らしいポートはhttps://github.com/aNNiMON/Lightweight-Stream-API

さらに上にある:私は印象を持ってhttp://www.threeten.org/threetenbp/

EDIT

:あなたは、Androidで最新のJava 8日のAPIを使用したい場合は、このポートを使用することができます私の以前の答えは100%明確ではなかったあなたの問題は、Android SDKで使用されているJava 7では利用できないArrayList.forEachメソッドを使用することです。 Android Studioには、Jackコンパイラを使用していると思われる補完が表示され、これらのAPIが利用可能です。しかし、あなたはそれを無視し、Java 8のAPIポートを使用するか、RetrolambdaなしでJava 8の構文とAPIを使用できるようにするJackコンパイラに切り替える必要があります。

2

List.forEach(は、JDK8で追加されたメソッドです。

Android API 24(Android 7.0のように)はJDK8を持っていますが、以下のものはJDK8を持っていません。

したがって、this oneのようなJDK8の代わりに互換性ライブラリを使用する必要があります。

関連する問題