前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >那些年,Kotlin 都截胡了哪些 Java 新特性

那些年,Kotlin 都截胡了哪些 Java 新特性

作者头像
HikariLan贺兰星辰
发布2022-11-14 17:43:17
7970
发布2022-11-14 17:43:17
举报
文章被收录于专栏:HikariLan's BlogHikariLan's Blog

那些年,Kotlin 都截胡了哪些 Java 新特性

众所周知,Kotlin被称为最好的 Java。自 Kotlin 发布以来,凭借着其在 JVM 平台上惊人的兼容性,互操作性以及新特性支持,其迅速成为了广泛使用的 JVM 语言之一,就连 Google 也将 Kotlin 钦定为 Android 的首选开发语言。Kotlin 相对 Java 提供了非常多的特性,这些特性甚至截胡了某些 Java 即将推出的新特性,现在就让我们来盘点一下这些被 Kotlin “截胡” 的 Java 新特性吧…

JEP 286: Local-Variable Type Inference

JEP 286: 本地变量类型推断 在 Java 10 发行,为在局部作用域的具有初始值的变量提供了自动类型推断:

Kotlin 则始终支持(无论在全局还是局部作用域)变量自动类型推断:

JEP 325/354/361: Switch Expressions

JEP 361: Switch 表达式 在经过 Java 12 和 13 的两次预览后,终于在 Java 14 中发行,其允许一种增强的 switch 语法:使用 case … -> labels 的方式来表达分支以避免输入额外的 break; 语句;更重要的是,switch 语句支持作为表达式返回一个结果给变量:

在 Kotlin 中则通过 when 语句获得同样的体验:

JEP 355/368/378: Text Blocks

JEP 378: 文本块 在 Java 15 完成预览并最终发行,其提供了一种更好的描述多行字符串的方式,而不是通过添加 \n 这样的转义序列表达:

在 Kotlin 中,文本块同样被支持:

JEP 401: Primitive Classes (Preview)

JEP 401: 原始类(预览) 是一个尚在候选(Candidate)状态的 JEP 提案,其试图允许 Java 开发者创建像基本数据类型那样工作的类以提高包装对象的性能:

Kotlin 则在 1.5.0 引入了 value class 的概念,允许为单一基本数据类型创建包装对象:

尽管此两者的运作方式和限制条件有很大的不同,但其目标事实上是相同的:希望减少包装器对象额外的内存使用,优化内存结构。

JEP 360/397/409: Sealed Classes

JEP 409: 密封类 在 Java 17 完成预览并最终发行,其允许限定哪些类和接口可以继承和实现它们,以此为其它语言特性提供更好的模式匹配推断:

Kotlin 也同样提供了密封类的功能,仅允许在同一个文件内的类继承/实现一个密封类/接口:

JEP 425: Virtual Threads (Preview)

JEP 425: 虚拟线程(预览) 在 Java 19 发行,其提供了一套有栈协程系统,以减少系统级调用线程带来的高开销。

Kotlin 提供了 Kotlin 协程以达到近似的目的,不过值得一提的是,Kotlin 协程是无栈协程,这意味着其在互操作性和使用内存大小上相比有栈协程会较差一些。

JEP 428: Structured Concurrency

作为 Project Loom 的一部分,与 JEP 425 一样,JEP 428: 结构化并发(孵化) 同样在 Java 19 发行,其提供了一套更好的 API 来处理多线程下的程序调度:

同样,Kotlin 协程也带来了类似的调度方式:

JEP 430: String Templates

JEP 430: 字符串模板 (预览) 是一个尚在候选状态的 JEP 提案,其引入了一种间接方便的在字符串中嵌入表达式的方式:

Kotlin 提供的字符串模板语法如下:

JEP 305/375/394: Pattern Matching for instanceof

JEP 394: instanceof 的模式匹配 在 Java 16 完成预览并最终发行,其引入了一种在指定作用域内使用 instanceof 进行的自动类型推断:

Kotlin 通过其 Smart Cast 机制自动完成类型推断:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 那些年,Kotlin 都截胡了哪些 Java 新特性
    • JEP 286: Local-Variable Type Inference
      • JEP 325/354/361: Switch Expressions
        • JEP 355/368/378: Text Blocks
          • JEP 401: Primitive Classes (Preview)
            • JEP 360/397/409: Sealed Classes
              • JEP 425: Virtual Threads (Preview)
                • JEP 428: Structured Concurrency
                  • JEP 430: String Templates
                    • JEP 305/375/394: Pattern Matching for instanceof
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档