我可以使用 retrolambda 来启用 Android API 级别 <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
我没有使用retrolambda,而是尝试启用Java 8。前两个代码示例仍然有效,尽管butterknife 停止工作。https://developer.android.com/preview/j8-jack.html#configuration这里ava.util.function
说支持,但是我运行第三个的时候还是会crash,这次有点不一样
java.lang.NoClassDefFoundError: com.retrolambdatry.MainActivity$-void_onCreate_android_os_Bundle_savedInstanceState_LambdaImpl1