Android Studio 3.0 中支持的Java8 特性

集成方法

在Android Studio 3.0 中其实已经支持了Java8 的部分特性,其中最多人用的就是Lambda 表达式也在列。

在AS3.0中使用lambda 其实也很简单

  1. 升级Android Plugin到3.0.0-alpha1 或者以上
  2. 在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_USEElementType.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.