返回顶部
首页 > 资讯 > 精选 >怎么使用Kotlin来扩展
  • 904
分享到

怎么使用Kotlin来扩展

2023-06-17 02:06:34 904人浏览 薄情痞子
摘要

今天小编给大家分享一下怎么使用Kotlin来扩展的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实际上客户早在去年年初的时候便

今天小编给大家分享一下怎么使用Kotlin来扩展的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

怎么使用Kotlin来扩展

实际上客户早在去年年初的时候便已经完成了他们的后端技术选型,而Kotlin在那个时候便已经成为了项目构建后端微服务的主要语言。所以在这些分享中我并没能给出一个很好的答案,而这个问题本身也引起了我的思考。

首先我们看看Kotlin语言的特点,官方罗列了4个显著的特点:

  • 简洁 Consice

  • 安全 Safe

  • 友好的开发工具 Tool-friendly

  • 和Java的互操作性 Interoperable

简洁 Concise

Kotlin的简洁体现在很多方面,对于Java程序员来说,最直接的体现便是在Kotlin语法中直接省略了分号,并且在构造一个类的实例时省略了new关键字,下面便是一段标准的Kotlin代码:

fun sayHi(name: String): String {     val sb = StringBuilder(str = "Hi ")     sb.append(name)     return sb.toString() }

让我们再看一个Kotlin官网的示例代码,来体会一下Kotlin的简洁:

data class Customer(val name: String, val email: String, val company: String)

简单的一行代码便实现了一个包含了constructor以及默认getters, toString, equals,  hashCode和copy实现的Pojo,而同样的java实现需要大概50多行代码, 即便是在Lombok的帮助下仍然需要十几行代码。

Kotlin还在Java集合类的基础上进行了封装,并提供了非常丰富的集合操作。同时结合非常简洁的Lambda表达式,使得调用更加精简。

val numbers = 1..10 val doubles = numbers.map {it * 2} val sumOfSquares = doubles.fold(0) {x,y -> x+y}

除了这些,Kotlin还提供了很多类似字符串模板、标准函数库、运算符重载的特性,这些特性使得代码可以非常简洁易读,极大提升了开发者的体验。

从实际项目来看,Kotlin的简洁在代码量上表现的非常明显,一个提供了24个apispring  Boot微服务,通过Kotlin编写的代码量在8000行左右(含测试代码)。同样规模的微服务用Java编写的情况下代码量将远大于这个数字。

安全 Safe

许多编程语言(包括  Java)中最常见的陷阱之一是访问空的指针,导致空指针异常。Kotlin的安全性主要体现在它对Null-Safety的支持上。能够使代码在编译期间就察觉到可能的NullPointerException,让Java  developer能够轻松摆脱NullPointerException。

var output: String output = null // Compilation error  val name: String? = null // Nullable type println(name.length()) // Compilation error

同时Kotlin还提供了一些自动转型及类型推断的特性,在提供安全检查的同时也带来了便捷。

下面也是一个来自官网的样例,Kotlin在类型检查得到true后,自动完成了Any到Invoice类型的转换:

fun calculateTotal(obj: Any) {     if (obj is Invoice)         obj.calculateTotal() }

友好的开发工具 Tool-friendly

这个特点就不用多说了,引用官网那句傲娇的原话就是 “It’s what we do best!”

和Java的互操作性 Interoperable

简单来说这个特性就是Kotlin和Java是可以相互调用的。

这意味着我们可以利用任何已有的Java  libraries来构建我们的应用,让我们无需放弃我们所熟悉的一切便可以享受Kotlin给我们带来的愉快的编程体验。

... import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.JpaSpecificationExecutor ...  interface AreaRepository : JpaRepository<AreaEntity, Long>, JpaSpecificationExecutor<AreaEntity> {     fun existsByAreaId(id: UUID): Boolean     fun findOneByAreaId(areaId: UUID): AreaEntity? }

例子中是项目上一个用Kotlin编写的基于Spring  JPA的Repository,可以看到得益于Interoperable的特性,在尝试使用Kotlin时我们可以依赖的是一个完整的Java生态圈。我们依然可以使用我们所熟悉的框架、构建工具、开发工具和测试工具。

怎么使用Kotlin来扩展

如何开始?

看了这么吸引人的语言特性,或许你已经忍不住想要尝试Kotlin了。但是实际情况可能是项目已经开始了一段时间,我们已经用Java为项目构建了很多功能。这个时候引入一个新的语言可能会给项目带来一定的风险。那么我们可以如何开始呢?

使用Kotlin编写单元测试

如果你比较保守,那么你可以开始尝试在项目中仅通过Kotlin来编写单元测试,同样得益于Interoperable这个特性,我们可以轻松的使用Kotlin来为Java类编写单元测试。这样你可以不用担心尝试Kotlin为你的业务代码带来风险,同时也可以在编写单元测试的过程中尝试Kotlin语言的各种特性。

使用Kotlin来扩展

你还可以使用Kotlin来丰富项目中所用到的Library,使用Kotlin  Extensions来在不需要继承的情况下完成对原有类型的扩展。或者直接通过Kotlin来编写工具类为项目服务。

//Extensions.kt fun String.lastChar() = this.get(this.length - 1) fun KPerson.fullName() = "${this.firstName} ${this.lastName}" //String template  //Java JUnit test Test public void lastChar() throws Exception {  assertEquals('n', Extensions.lastChar("Kotlin")); }  Test public void fullName() throws Exception {   KPerson k = new KPerson("Foo", "Bar", Gender.MALE, 18);   assertEquals("Foo Bar", Extensions.fullName(k)); }

使用Kotlin来重写微服务

如果你在使用基于Spring  Boot的微服务,那么完全可以挑选一个优先级较低的服务逐步通过Kotlin进行改写。你会发现这个转变会发生的无比顺滑。因为Kotlin不会改变你之前通过Spring  Boot构建微服务的方式。

这三个方法都可以让你在风险可控的情况下尝试Kotlin。让你在感受Kotlin语言带来的美好编程体验的同时,使整个团队逐渐熟悉Kotlin语言。你将会发现对于一个Java程序员来说,学习Kotlin真的是一件非常容易的事情,可以说一旦开始你就再也回不去了。

以上就是“怎么使用Kotlin来扩展”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: 怎么使用Kotlin来扩展

本文链接: https://lsjlt.com/news/286923.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用Kotlin来扩展
    今天小编给大家分享一下怎么使用Kotlin来扩展的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实际上客户早在去年年初的时候便...
    99+
    2023-06-17
  • Kotlin拓展函数怎么用
    这篇文章主要介绍了Kotlin拓展函数怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Kotlin拓展函数怎么用文章都会有所收获,下面我们一起来看看吧。原理拓展函数是kotlin里一个比较常用的特性,例如我...
    99+
    2023-06-29
  • 怎么使用PostgreSQL扩展函数
    这篇文章主要讲解了“怎么使用PostgreSQL扩展函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PostgreSQL扩展函数”吧!例子.&nb...
    99+
    2024-04-02
  • 怎么使用Laravel World的扩展
    本篇内容介绍了“怎么使用Laravel  World的扩展”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Laravel World...
    99+
    2023-06-25
  • 怎么使用Zsh扩展集合
    这篇文章主要介绍了怎么使用Zsh扩展集合的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Zsh扩展集合文章都会有所收获,下面我们一起来看看吧。Zsh(Z-shell)是一款用于交互式使用的shell,也可...
    99+
    2023-06-27
  • MyBatis扩展插件怎么使用
    MyBatis扩展插件可以用来扩展MyBatis的功能,例如自定义类型处理器、拦截器、生成器等。使用MyBatis扩展插件的步骤如下...
    99+
    2024-03-07
    MyBatis
  • 怎么用PHP的SOAP扩展来创建Web Service
    这篇文章主要介绍了怎么用PHP的SOAP扩展来创建Web Service的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用PHP的SOAP扩展来创建Web Service文章...
    99+
    2024-04-02
  • 如何使用CSS来扩展增强Input Range
    这篇文章主要讲解了“如何使用CSS来扩展增强Input Range”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用CSS来扩展增强Input Rang...
    99+
    2024-04-02
  • 怎么在php中使用APCu扩展
    这篇文章给大家介绍怎么在php中使用APCu扩展,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。APCu 扩展APCu 扩展是 APC 扩展的升级,APC 扩展已经不维护了。这两套扩展其实都是基于 opcode cach...
    99+
    2023-06-15
  • 怎么使用PHP中的runkit扩展
    小编给大家分享一下怎么使用PHP中的runkit扩展,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一起学习PHP的runkit扩展如何使用在 PHP 运行的时候,...
    99+
    2023-06-15
  • ECMAscrip函数的扩展怎么使用
    本篇内容主要讲解“ECMAscrip函数的扩展怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ECMAscrip函数的扩展怎么使用”吧!1.函数参数的默认值1.1函数参数指定默认值在ECM...
    99+
    2023-06-21
  • Eclipse扩展点怎么用
    小编给大家分享一下Eclipse扩展点怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Eclipse中提供了几个扩展点,方便扩展重构功能。基本的重构功能有,R...
    99+
    2023-06-17
  • JS ES扩展运算符怎么使用
    这篇文章主要介绍“JS ES扩展运算符怎么使用”,在日常操作中,相信很多人在JS ES扩展运算符怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS ES扩展运算符怎么使用...
    99+
    2023-06-21
  • 怎么使用fdisk扩展磁盘空间
    这篇文章主要介绍了怎么使用fdisk扩展磁盘空间的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用fdisk扩展磁盘空间文章都会有所收获,下面我们一起来看看吧。fdisk用来管理linux的磁盘,进行分区,...
    99+
    2023-06-28
  • 使用Python扩展lldb
    Xcode集成了LLDB,进一步简化了程序调试流程。虽然LLDB很强大,但是它的命令很有限。所幸的是,lldb包含了对python的支持,使得lldb的拓展成为可能。本人在开发过程中很喜欢使用image lookup 命令,但是苦于每次只能...
    99+
    2023-01-31
    Python lldb
  • Kotlin怎么使用
    今天小编给大家分享一下Kotlin怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 如何定义变量Java 定义变量...
    99+
    2023-06-17
  • golang怎么扩展
    近年来,Golang已成为越来越多程序员的首选编程语言。与其他编程语言相比,Golang的高并发性和良好的性能表现使其在大规模分布式系统中获得了广泛应用。随着企业对软件系统要求的不断提高,扩展Golang也成为了一项重要任务。那么,如何扩展...
    99+
    2023-05-14
  • ES6中的扩展运算符怎么使用
    这篇文章主要讲解了“ES6中的扩展运算符怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ES6中的扩展运算符怎么使用”吧!ES6的扩展运算符,它的语法...
    99+
    2024-04-02
  • 怎么使用YII2框架安装Redis扩展
    今天小编给大家分享一下怎么使用YII2框架安装Redis扩展的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。需要下载yii2-...
    99+
    2023-07-02
  • jQuery中如何使用$.extend方法来扩展JSON对象
    这篇文章给大家分享的是有关jQuery中如何使用$.extend方法来扩展JSON对象的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。$.extend方法可以扩展JSON对象,用一...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作