Kotlin 1.5.0 稳定版发布,2021 年首个大版本

栏目: 软件资讯 · 发布时间: 3年前

内容简介:Kotlin 1.5.0 稳定版已发布,此版本提供了稳定的语言特性,例如 JVM records、密封接口 (sealed interface)、内联类 (inline class),并引入了新的默认 JVM IR 编译器。据介绍,新的编译器与 Kotlin/Native 和 Ko...

Kotlin 1.5.0 稳定版已发布,此版本提供了稳定的语言特性,例如 JVM records、密封接口 (sealed interface)、内联类 (inline class),并引入了新的默认 JVM IR 编译器。据介绍,新的编译器与 Kotlin/Native 和 Kotlin/JS 编译器共享统一的管道和业务逻辑,因此 Kotlin 团队可同时为所有平台实现大多数功能、优化和错误修复。新的编译器还将允许开发者添加自定义处理和转换,这些处理和转换将自动在所有平台上运行

Kotlin 1.5 主要变化

下面简单介绍新增的语言特性。

支持 JVM records

JVM records 是 JVM 生态将要推出的重要更新,其类似于 Kotlin data 类,主要用作简单的数据持有者。 Java 的互操作性一直以来都是并且将永远作为 Kotlin 的优先考虑事项。 因此,Kotlin 代码可以“理解”新的 Java records,并将其视为具有 Kotlin 属性的类。 这类似于遵循 JavaBeans 惯例的常规 Java 类:

// Java
record Point(int x, int y) { }
// Kotlin
fun foo(point: Point) {
    point.x // seen as property
    point.x() // also works
}

出于互操作性,可以用@JvmRecord注解data类,生成新的 JVM records 方法:

@JvmRecord
data class Point(val x: Int, val y: Int)

密封接口和密封类的改进

使密封类时,它会将层次结构限制为已定义的子类,从而允许在when分支中进行详尽的检查。在 Kotlin 1.4 中,密封类层次结构具有两个约束。 首先,顶层类不能是一个密封接口,应该是一个类。 其次,所有子类均应当位于同一文件中。

Kotlin 1.5 去除了这两个约束:您现在可以使一个接口密封。子类(包括密封类和密封接口)应与 super 类位于同一编译单元和同一软件包中,但现在可以位于不同文件中。

sealed interface Expr
data class Const(val number: Double) : Expr
data class Sum(val e1: Expr, val e2: Expr) : Expr
object NotANumber : Expr

fun eval(expr: Expr): Double = when(expr) {
    is Const -> expr.number
    is Sum -> eval(expr.e1) + eval(expr.e2)
    NotANumber -> Double.NaN
}

密封类以及现在的密封接口对于定义抽象数据类型 (ADT) 层次结构非常实用。

详细更新说明查看发布公告

下载地址:https://github.com/JetBrains/kotlin/releases/tag/v1.5.0
参考:https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-1-4-30/


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP 6与MySQL 5基础教程

PHP 6与MySQL 5基础教程

(美)厄尔曼 / 陈宗斌 等 / 人民邮电出版社 / 2008-11-1 / 65.00元

本书是一部经典的入门级著作,采用基于任务的方法来讲授PHP和MySQL,使用大量图片指导读者深入学习语言,并向读者展示了如何构造动态Web站点。书中用简洁、直观的步骤和讲解提供了学习任务和概念的最快方式。通过学习本书,读者可以快速、高效地掌握PHP和MySQL,成为一位构建Web站点的高手。 本书适合初中级Web应用开发和设计人员阅读。 本书是讲述PHP和MySQL技术的畅销书,以深入......一起来看看 《PHP 6与MySQL 5基础教程》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码