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

263 篇文章 2 订阅
164 篇文章 0 订阅
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。当然,只有时间会告诉这些是否包括。在此期间,您可以使用它的变体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值