在Java 7或更早版本中使用Java 8 Lambda表达式
我认为没有人会拒绝Java 8引入的Lambda表达式的有用性。但是,许多项目都停留在Java 7甚至旧版本上。 升级可能既耗时又昂贵。 如果第三方组件与Java 8不兼容,则可能根本无法升级。
除此之外,整个Android平台都停留在Java 6和7上。
尽管如此,Lambda表达式仍然有希望!
为Java 5、6和7提供了Lambda表达式的移植。 从Retrolambda文档中:
Retrolambda使您可以在Java 7或更低版本上运行带有lambda表达式和方法引用的Java 8代码。 它通过转换Java 8编译的字节码来做到这一点,以便它可以在Java 7运行时上运行。 转换后,它们只是一堆普通的.class文件,没有任何其他运行时依赖项。
要运行Retrolambda,可以使用或插件。
如果要在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_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
翻译自:我认为没有人会拒绝Java 8引入的Lambda表达式的有用性。但是,许多项目都停留在Java 7甚至旧版本上。 升级可能既耗时又昂贵。 如果第三方组件与Java 8不兼容,则可能根本无法升级。 除此之外,整个Android平台都停留在Java 6和7上。 尽管如此,Lambda表达式仍然有希望! 为Java 5、6和7提供了Lambda表达式的移植。 从Retrolambda文档中: Retrolambda使您可以在Java 7或更低版本上运行带有lambda表达式和方法引用的Java 8代码。 它通过转换Java 8编译的字节码来做到这一点,以便它可以在Java 7运行时上运行。 转换后,它们只是一堆普通的.class文件,没有任何其他运行时依赖项。 要运行Retrolambda,可以使用或插件。 如果要在Android上使用Lambda表达式,则只需将以下行添加到gradle构建文件中:
