Android Studio 3.0 中支持的Java8 特性
集成方法
在Android Studio 3.0 中其实已经支持了Java8 的部分特性,其中最多人用的就是Lambda 表达式也在列。
在AS3.0中使用lambda 其实也很简单
- 升级Android Plugin到3.0.0-alpha1 或者以上
-
在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
}
}
就这样两部可以了。
如果你以前使用了jack或者me.tatarka.retrolambda,只需要移除相关的代码就可以了.
AS3.0 中java8 支持的特性和Api等级
Java 8 Language Feature | 最低兼容的API等级 |
---|---|
Lambda expressions | 任意API等级。但是,只有当lambda所捕获的所有值都是可序列化的时候才支持lambda序列化。 |
Method References | 任意API等级. |
Type Annotations | 任意API等级。但是,类型注释信息在编译时可用,但在运行时不可用。此外,TYPE 在API级别24及受以下,但不支持ElementType.TYPE_USE 或ElementType.TYPE_PARAMETER 。 |
Default and static interface methods | 任意API等级。 |
Repeating annotations | 任意API等级。 |
Java 8 Language API | 最低兼容的API等级 |
---|---|
java.lang.annotation.Repeatable |
API level 24 or higher. |
AnnotatedElement.getAnnotationsByType(Class) |
API level 24 or higher. |
java.util.stream |
API level 24 or higher. |
java.lang.FunctionalInterface |
API level 24 or higher. |
java.lang.reflect.Method.isDefault() |
API level 24 or higher. |
java.util.function |
API level 24 or higher. |