更新: 自Android Studio 2.4开始,Jack编译器将被弃用,Java 8支持将被集成到默认构建链中。一些Java 8功能在任何API级别上都可用,但有些仍然限于API >= 24,请参见:
https://developer.android.com/studio/preview/features/java8-support.html
旧答案:
从API级别9开始,Java 8功能 可用,但前提是您使用Android Studio 2.1(预览版)和Android N Preview SDK。
http://android-developers.blogspot.de/2016/03/first-preview-of-android-n-developer.html
改进的Java 8语言支持-我们很高兴地将Java 8语言特性引入Android平台。通过Android的Jack编译器,您现在可以在Gingerbread及更高版本的Android上使用许多流行的Java 8语言特性,包括Lambda等等。新功能有助于减少样板代码。例如,Lambda可以替代匿名内部类来提供事件监听器。一些Java 8语言特性-例如默认方法和静态方法、流以及函数接口-现在也可用于Android N及以上版本。通过Jack,我们期待更紧密地跟踪Java语言,并保持向后兼容性。
更新
Jack工具链已经弃用。如果你使用Android插件版本2.4.0-alpha4(或更高版本),Java8特性将会加入标准工具链中。更多信息在这里。
原始答案 除了lambda表达式,Java 8特性在API N及其以上版本可用。Lambda表达式通过匿名类被回溯(back-ported)到Gingerbread版本。
Android N基于匿名类来实现lambda表达式。这种方法使它们向后兼容,并能在早期版本的Android上执行。
要测试这个特性,你需要安装Android Studio 2.1预览版、JDK 8以及最新的构建工具。
示例构建配置:
android {
compileSdkVersion 23
buildToolsVersion "24.0.0 rc1"
defaultConfig {
minSdkVersion 23
targetSdkVersion 23
versionCode 1
versionName "1.0"
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
更新
从Android Studio 2.4开始,Jack编译器将被弃用。
Android Studio 3.0及以上版本支持所有Java 7语言特性和一个因平台版本而异的Java 8语言特性子集。
所有官方文档信息请查看: https://developer.android.com/studio/write/java8-support
您也可以直接在相应的build.gradle文件中进行配置:
只需要进行配置:
android {
...
// Configure only for each module that uses Java 8
// language features (either in its source code or
// through dependencies).
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// For Kotlin projects
kotlinOptions {
jvmTarget = "1.8"
}
}