专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
相关文章推荐
新浪科技  ·  【#马斯克Grok启用新Logo##马斯克G ... ·  23 小时前  
新浪科技  ·  【去年 ... ·  昨天  
DeepTech深科技  ·  “踢掉”OpenAI之后,Figure ... ·  3 天前  
51好读  ›  专栏  ›  CSDN

为什么我要改用Kotlin

CSDN  · 公众号  · 科技媒体  · 2017-05-19 12:42

正文

写在前面的话 :作为一个不熬夜的人,一觉醒来发现Kotlin成为了Android的官方语言,可谓是大喜过望。为了趁热打铁,我决定提前三天放出原定本周日Release的文章。希望能及时让大家了解一下Kotlin。


相信很多开发人员,尤其是Android开发者都会或多或少听说过Kotlin,当然如果没有听过或者不熟悉也没有关系。因为本篇文章以及博客后期的内容会涉及到很多关于Kotlin的知识分享。


在写这篇文章前的一个多月,Flipboard中国的Android项目确定了正式将Kotlin作为项目开发语言,这就意味着新增的代码文件将以Kotlin代码格式出现,而且同时旧的Java代码也将会陆陆续续翻译成Kotlin代码。在使用Kotlin的这段时间,被它的简洁,高效,快捷等等特点震撼,所以有必要写一篇文章来谈一谈Kotlin的特性,如若能取得推广Kotlin的效果则倍感欣慰。


Kotlin的“简历”


  • 来自于著名的IDE IntelliJ IDEA(Android Studio基于此开发) 软件开发公司 JetBrains(位于东欧捷克)

  • 起源来自JetBrains的圣彼得堡团队,名称取自圣彼得堡附近的一个小岛(Kotlin Island)

  • 一种基于JVM的静态类型编程语言


来自知名的工具开发商JetBrains,也就决定了Kotlin的基因中必然包含实用与高效等特征。那我们接下来看一看Kotlin的特点,当然这也是我改用Kotlin的重要原因。


语法简单,不啰嗦



  • Kotlin支持类型推断,没有Java那样的啰嗦。

  • 另外用var表示变量,val表示常量更加的简洁

  • 方法也很简单,连function都缩写成了fun,平添了几分双关之意。

  • 类的继承和实现很简单,使用:即可

  • Kotlin每个句子都不需要加分号(;)


空指针安全


空指针(NullPointerException或NPE)是我们使用Java开发程序中最常见的崩溃了。因为在Java中我们不得不写很多防御性的代码,比如这样:



在Kotlin中空指针异常得到了很好的解决。


  • 在类型上的处理,即在类型后面加上?,即表示这个变量或参数以及返回值可以为null,否则不允许为变量参数赋值为null或者返回null

  • 对于一个可能是null的变量或者参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过。


如下面的代码就是Kotlin实现空指针安全的一个例子,而且相对Java实现而言,简直是一行代码搞定的。



关于空指针安全的原理,可以参考《 研究学习Kotlin的 一些方法 》(http://droidyue.com/blog/2017/05/08/how-to-study-kotlin/)


支持方法扩展


很多时候,Framework提供给我们的API往往都时比较原子的,调用时需要我们进行组合处理,因为就会产生了一些Util类,一个简单的例子,我们想要更快捷的展示Toast信息,在Java中我们可以这样做。



但是Kotlin的实现却让人惊奇,我们只需要重写扩展方法就可以了,比如这个longToast方法扩展到所有的Context对象中,如果不去追根溯源,可能无法区分是Framework提供的还是自行扩展的。



注意: Kotlin的方法扩展并不是真正修改了对应的类文件,而是在编译器和IDE方面做得处理。使我们看起来像是扩展了方法。


Lambda, 高阶函数,Streams API, 函数式编程支持


所谓的Lambda表达式是匿名函数,这使得我们的代码会更加的简单。比如下面的代码就是lambda的应用。



所谓的高阶函数就是:


  • 可以接受函数作为参数

  • 也可以返回函数作为结果


举一个接受函数作为参数的例子。在Android开发中,我们经常使用SharedPreference来存储数据,如果忘记调用apply或者commit则数据修改不能应用。利用Kotlin中的高阶函数的功能,我们能更好的解决这个问题。



当然这上面的例子中我们也同时使用了方法扩展这个特性。


Kotlin支持了Streams API和方法引用,这样函数式编程更加方便。比如下面的代码就是我们结合Jsoup,来抓取某个proxy网站的数据,代码更加简单,实现起来也快速。



字符串模板


无论是Java还是Android开发,我们都会用到字符串拼接,比如进行日志输出等等。在Kotlin中,字符串模板是支持的,我们可以很轻松的完成一个字符串数组的组成。



注意: 关于字符串拼接可以参考《Java细节:字符串的拼接》(http://droidyue.com/blog/2014/08/30/java-details-string-concatenation/)


与Java交互性好


Kotlin和Java都属于基于JVM的编程语言。Kotlin和Java的交互性很好,可以说是无缝连接。这表现在:


  • Kotlin可以自由的引用Java的代码,反之亦然。

  • Kotlin可以现有的全部的Java框架和库

  • Java文件可以很轻松的借助IntelliJ的插件转成kotlin


Kotlin应用广泛








请到「今天看啥」查看全文