我可以使用retrolambda来启用在Android API level <24下使用Lambda表达式。所以这是可行的。
myButton.setOnClickListener(view -> Timber.d("Lambdas work!"));
这也可以工作
Runnable runLater = () -> Timber.d("Lambdas work!");
runLater.run();
但这个不会
Consumer<Integer> runLaterWithInt = (Integer i) -> Timber.d("i = " + i);
runLaterWithInt.accept(3);
最后一个在Android API Level 24上工作正常,但在其他设备上,这段代码会导致崩溃。
java.lang.NoClassDefFoundError: com.retrolambdatry.MainActivity$$Lambda$1
我尝试启用Java 8而不是使用Retrolambda。前两个代码示例仍然有效,但ButterKnife停止工作了。https://developer.android.com/preview/j8-jack.html#configuration这里说支持java.util.function
,但是当运行第三个代码时,我仍然遇到了崩溃,这次有点不同。
java.lang.NoClassDefFoundError: com.retrolambdatry.MainActivity$-void_onCreate_android_os_Bundle_savedInstanceState_LambdaImpl1