我认为没有人会拒绝Java 8引入的Lambda表达式的有用性。但是,许多项目都停留在Java 7甚至旧版本上。 升级可能既耗时又昂贵。 如果第三方组件与Java 8不兼容,则可能根本无法升级。
除此之外,整个Android平台都停留在Java 6和7上。
尽管如此,Lambda表达式仍然有希望!
Retrolambda为Java 5、6和7提供了Lambda表达式的反向移植。
从Retrolambda文档中:
Retrolambda使您可以在Java 7或更低版本上运行带有lambda表达式和方法引用的Java 8代码。 它通过转换Java 8编译的字节码来做到这一点,以便它可以在Java 7运行时上运行。 转换后,它们只是一堆普通的.class文件,没有任何其他运行时依赖项。
要运行Retrolambda,可以使用Maven或Gradle插件。
如果要在Android上使用Lambda表达式,则只需将以下行添加到gradle构建文件中:
<project> /build.gradle :
buildscript {dependencies {classpath 'me.tatarka:gradle-retrolambda:2.4.0' }
}
<project> /app/build.gradle :
apply plugin: 'com.android.application'// Apply retro lambda plugin after the Android plugin
apply plugin: 'retrolambda' android {compileOptions {// change compatibility to Java 8 to get Java 8 IDE support sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}
}
翻译自: https://www.javacodegeeks.com/2015/03/using-java-8-lambda-expressions-in-java-7-or-older.html