您的位置:首页 > 移动开发 > Android开发

java8 语言新功能在Android 中的使用

2017-08-16 11:21 99 查看
原文地址

android 目前居我了解应该是完全支持java7的所有特性功能,而8的语言功能仅支持一半儿,支持java8 语言新功能需要添加一个名为jack 的新编译,jack 在Android studio 2.1中才被支持,因此要使用java8的新特性将要在android studio 2.1以上的开发工具中使用

android 目前不是完全支持所有的java8 语言功能,一下功能在开发面向android 7.0 的时候即可使用

1、默认和静态接口方法

2、Lambda表达式 (在API 23的版本中也可以使用)

3、重复注解

4、方法引用 (在API 23的版本中也可以使用)

5、类型注解 (在API 23的版本中也可以使用) 仅在编译中使用,在运行的时候不被使用

要在 Android 的较早版本中测试 Lambda 表达式、方法引用和类型注解,请前往您的 
build.gradle
 文件,将 
compileSdkVersion
 和 
targetSdkVersion
 设置为 23 或更低。您仍需要启用
Jack 工具链以使用这些 Java 8 功能。

此外,也可使用以下 Java 8 语言 API:
反映和语言相关 API:
java.lang.FunctionalInterface

java.lang.annotation.Repeatable

java.lang.reflect.Method.isDefault()

以及与重复注解关联的反映 API,例如 
AnnotatedElement.getAnnotationsByType(Class)


实用程序 API:
java.util.function

java.util.stream


启用 Java 8 功能和 Jack 工具链

要使用新的 Java 8 语言功能,还需使用新的 Jack 工具链。新的 Android 工具链将 Java 源语言编译成 Android 可读取的 Dalvik 可执行文件字节码,且有其自己的 
.jack
 库格式,在一个工具中提供了大多数工具链功能:重新打包、压缩、模糊化以及
Dalvik 可执行文件分包。

以下是构建 Android Dalvik 可执行文件可用的两种工具链的对比:
旧版 javac 工具链:
javac (
.java
 → 
.class
) → dx (
.class
 → 
.dex
)
新版 Jack 工具链:
Jack (
.java
 → 
.jack
 → 
.dex
)

配置 Gradle

要为您的项目启用 Java 8 语言功能和 Jack,请在模块级别的 
build.gradle
 文件中输入以下内容:
android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android lambda java 7 java8