【译】Kotlin 1.2的新功能:代码重用,更适合初学者

贾藻
• 阅读 3297

翻译:疯狂的技术宅
英文标题:What's new in Kotlin 1.2? Code reuse, for starters
英文连接:https://www.javaworld.com/art...
本文首发于微信公众号:充实的脑洞

测试版现在可以下载,并支持Java 9

【译】Kotlin 1.2的新功能:代码重用,更适合初学者

静态类型语言 Kotlin 1.2 版将提供一个实验功能,可以跨平台重用代码,以及与Java 9模块系统的兼容性。 Kotlin 1.2的测试版现在可以下载

kotlin的实验多平台项目功能允许开发人员在支持的目标平台之间重用代码:最初是JVM和JavaScript,后来是本地的。在平台之间共享的代码被放在一个公共模块中;平台相关的部分被放在特定于平台的模块中。在编译期间,为公共和平台特定部分编写代码。

开发人员可以通过预期和实际的声明来表示特定于平台的部分的通用代码的依赖关系。该声明指定一个API,而实际的声明要么是特定于API的平台,要么是一个类型别名,它引用外部库中的API的现有实现。同时,标准库具有用于在跨平台代码中执行数学运算的kotlin.math包。

kotlin.math包现在也为JavaScript的 math polyfills 提供了更好的精度。

Kotlin 1.2的标准库与新引入的Java 9模块系统兼容,该系统禁止拆分包(多个.jar文件在同一个包中声明类)。 在Kotlin 1.2中,kotlin-stdlib-jdk7和kotlin-stdlib-jdk8工件取代了旧的kotlin-stdlib-jre7和kotlin-stdlib-jre8。

此外,为了支持Java 9,kotlin 1.2还从 kotlin-reflect 库中删除了kotlin.reflect 包中不推荐使用的声明。开发人员需要切换到kotlin.reflect.full包中的声明,该声明在kotlin1.1中首次发布。

Kotlin 1.2中针对类型推导进行了改进,包括编译器能够使用类型推导中的类型转换信息。 如果开发人员调用返回类型参数(如T)的泛型方法,并将返回值转换为特定类型(例如Foo),则编译器现在可以知道,这个调用的T需要绑定到Foo类型。 这对于Android开发人员来说尤其重要,因为 Kotlin 编译器可以在 Android API Level 26 中正确分析findViewById调用。此外,编译器现在有一个选项,将所有警告视为错误。

Kotlin 1.2还具有以下增强功能:

  • 它现在支持注释中的数组文字,简化编码。
  • 它使用更一致的语法。
  • 新的反射API允许开发人员检查一个lateinit变量是否已经初始化。
  • lateinit修饰符现在可用于顶级属性和局部变量。

Kotlin 本是依赖JVM的语言,但后来又被扩展为可以编译成JavaScript。这一语言在今年春天被推广,Google将其作为构建Android移动应用程序的机制,与 Java 一起使用。

关注微信公众号:充实的脑洞, 一个技术宅的保留地
【译】Kotlin 1.2的新功能:代码重用,更适合初学者
点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
4年前
React Hooks实现异步请求实例—useReducer、useContext和useEffect代替Redux方案
<blockquote本文是学习了2018年新鲜出炉的ReactHooks提案之后,针对<strong异步请求数据</strong写的一个案例。注意,本文假设了:<br1.你已经初步了解<codehooks</code的含义了,如果不了解还请移步<ahref"https://reactjs.org/docs/hooksintro.html
Stella981 Stella981
4年前
Docker桥接宿主机网络与配置固定IP地址
有些需求是把这个容器与宿主机在同一个网段,但是本人不建议这样子去操作,因为一个容器本身就是一个封装好的服务。建议去按默认的网络去实现。临时设置\root@linuxdocker01~\vima.sh\网桥名称br\_namebr0\添加网桥brctladdbr$br\_name\给网桥设置I
Wesley13 Wesley13
4年前
mysqlsla安装和使用介绍
<divid"cnblogs\_post\_body"class"blogpostbody"<p安装mysqlsla<br源码路径:https://github.com/danielnichter/hackmysql.com<br源码存放路径:/usr/local/src<br1、获取源码<br如果没有git命令,请先安装git<
Wesley13 Wesley13
4年前
Java中Class对象详解
<divclass"htmledit\_views"id"content\_views"<phttps://blog.csdn.net/mcryeasy/article/details/52344729<br</p<p待优化整理总结</p<p</p<h1style"padding:0px;fontfamily:'apple
Stella981 Stella981
4年前
LocalDateTime计算时间差
<divclass"htmledit\_views"id"content\_views"<pLocalDateTime为java8的新特性之一<br</p<p<br</p<pLocalDateTime.now()获得当前时间<br</p<p</p<h5</h5<divstyle"marginleft
Stella981 Stella981
4年前
AssemblyScript 入门指南[每日前端夜话0xEB]
每日前端夜话0xEB每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:2459 字预计阅读时间:10分钟作者:DannyGuo翻译:疯狂的技术宅来源:logrocket!(https://oscimg.oschina.net/oscnet/b880277c594152a503
Stella981 Stella981
4年前
Node.js 12中的ES模块[每日前端夜话0x9E]
每日前端夜话0x9E每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:2552字预计阅读时间:10 分钟作者:BrianDeSousa翻译:疯狂的技术宅来源:logrocket!(https://oscimg.oschina.net/oscnet/2ccaf94cecd3
Wesley13 Wesley13
4年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
4年前
HTML5新增input标签属性
一.inputtype属性1<formaction""2邮箱<inputtype"email"name""id""<inputtype"submit"value"提交"<br/<br/3手机号码<inputtype"tel"name
Wesley13 Wesley13
4年前
30 天学习 30 种新技术系列
编者注:我们发现了比较有趣的系列文章《30天学习30种新技术》,准备翻译,一天一篇更新,年终礼包。以下是译文,英文标题表示还未翻译,附原文链接;中文标题表示已翻译,附译文链接。更新:全系列已经全部翻译完成。让你30天学习30种新技术,你会觉得这是挑战吗?!img1(http://segmentfault.com/img/b