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

Android 系列 1.8在Android Studio 2中使用Java 8功能

2017-01-05 14:48 218 查看
1.8在Android Studio 2中使用Java 8功能

问题

您正在使用Java 8,当前版本的Java在2015年,在您的其他工作,并希望在Android中使用它。



启用“Jack”编译器链,并使用Android Studio中支持的Java 8子集。

讨论

如果你首先是一个Java开发人员,你可能认为Android将完全支持当前版本的Java是公理的。你会错了。部分原因是由于Oracle的诉讼,部分原因是它不是他们的首要任务,Android在采用当前的Java SE版本时速度很慢。使用Android Nougat(7.0),Android团队已开始转向Java(Java 8)的当前版本,但部分和增量。好消息是,Android库的许多Java兼容部分显然是基于来自OpenJDK 8的源代码,因此令人讨厌的小不一致的数量应该随着时间的推移而减少。注意,为了编译Android
Nougat,您必须安装Java 8 SDK,即使您没有使用任何这些功能!

“Jack”(Java编译工具包?)是一个新的工具链,它将Java代码编译成自己的格式 - 没有更多的类文件到Dex翻译。这应该更快,但也意味着工具像findbugs读取.class文件将不再工作,没有额外的编译步骤。
要使用Jack,您必须具有Android Studio 2.1或更高版本以及Build Tools软件包24或更高版本。并且必须在build.gradle或模块设置中将Source和Target编译级别设置为1.8。另外,从当前预览,您必须手动添加jackOptions使能条目到build.gradle,在defaultConfig条目内:

android {

defaultConfig {

// Other defaults here...

// Enable 'jack'

jackOptions {

enabled true

}

}

// And if you prefer to set these manually:

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_8

targetCompatibility JavaVersion.VERSION_1_8

}

}

截至本文写作(2016年6月),示例1-5中显示的语言功能和示例1-6中的API功能正在工作。

实施例1-5。 Java 8语言特性

•Lambda表达式(也可在API级别23和更低版本上使用)

•方法引用(也可在API级别23和更低版本上使用)

•默认和静态接口方法

•多次使用注释

其中,Lambda表达式是最有名的并且可以说是最重要的,但其他表达式是重要的。

实施例1-6。 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

这些实用程序API支持函数式编程和组合。

还有很多其他重要的API,似乎很快就会出现在Android上,例如非常有用的日期和时间API java.time。当然,只有时间会告诉这些是否包括。在此期间,您可以使用它的变体。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐