5月18号,goole宣布Kotlin成为官方支持的开发语言以来,Kotlin语言社区,公众号,qq群等全面轰炸,本文是一篇译文,来自国外的一个用户,将给你们介绍,基础语法部分Kotlin和java之间的差别,对于使用java开发android的大牛们来讲能够作个基本的比较。java
1. Kotlin,do less,get moreandroid
Kotlin的一个主要优势是它的简洁。 你用更少的代码得到更多的功能。 而你写的代码越少,你犯的错误就越少。 这很简单。 让咱们看看Kotlin的基础知识,从类开始。编程
上面是一个一般的Java类。 它作的很少。 它只包含一些数据。 可是,当你意识到它给表带来的不足时,看看这段代码有多大是很痛苦的。 为了鼓励你,咱们会给你一个等同的类写在Kotlin。框架
是的,你会为你的数据类自动获取须要的getters,setters,e quals(),hashcode(),toString()和copy()函数! 固然,你能够轻松地重写这些函数,但在大多数状况下,只需声明类及其属性就足够了。less
这正是咱们的意思,当咱们说Kotlin简洁。编程语言
NullPointerException
如今咱们想提醒你在许多编程语言中最大的痛苦 - 空指针异常。 咱们几乎不能想象自从托尼·霍尔在1965年发明它以后,有多少开发者遭受了空指针,同时试图使事情更简单一些。函数
可悲的是,咱们不能及时回来,防止Tony犯这个错误。 可是使用Kotlin,咱们如今能够轻松地转义NullPointerException。工具
若是变量是可空的,编译器将不容许你访问它没有适当的检查。 Kotlin强迫你使用? 运算符。 这能够防止应用程序自动崩溃。
它如何在引擎盖下工做? 让咱们回顾一下生成的字节码。布局
正如你所看到的,咱们在这里有相同的空检查。 JetBrains的开发人员(建立Kotlin)知道每次检查咱们的变量是避免NullPointerException的惟一方法。 但他们也知道Android开发人员不想在他们的项目中处理NullPointerException。 他们可能想:“为何不自动生成这个检查若是变量是可空的?学习
JetBrains的开发人员只是这样,让咱们的生活更容易了!
让咱们来讨论一下有关使用util类的丑陋事情。 你有没有一个项目没有他们? 咱们几乎不记得这一切。 Kotlin有一个聪明的解决方案 - 扩展功能 - 帮助你摆脱全部的util类一劳永逸。
扩展函数几乎是一个一般的Kotlin函数。 可是当你声明它,你须要指定的实例将具备扩展功能的类。
注意'this',咱们做为参数传递给makeText()方法? 它不是类的一个实例,咱们声明这个函数,而是一个Context实例。 如今你能够直接从你的Activity或任何其余Context实例调用这个函数。 例如:
你应该记住,扩展函数不以任何方式修改它扩展的类。 那么它如何工做而不改变原来的类? 让咱们再次看到字节码。
哈! 您的函数隐式接收它做为第一个参数扩展的类的实例。 所以,在字节码中,对函数体中“this”的任何访问都将替换为对第一个参数的访问。 没有魔法真的。 您能够在项目的任何位置使用此函数。
时间删除你的util包!
你还记得findViewById()method()吗? 咱们相信你不喜欢它。 咱们也不是。 此外,咱们不想为咱们须要访问的每一个视图声明变量和Butterknife注释。
你能够忘记与Kotlin Android Extensions的视图绑定。 再也不须要建立变量和绑定视图。 您可使用在xml布局中声明的标识符直接访问您的视图。
这太简单了,不是吗?
基本上,findViewById()方法仍在使用中。 可是没有必要本身写。 Kotlin会为你作。
当您使用Android扩展时,findCachedViewById()函数和HashMap实例将会自动生成。 每次经过其标识符访问您的视图将被一个新的函数调用替换。 若是是第一次访问视图,此函数将调用一般的findViewById()函数,并将接收的视图添加到HashMap中,以便在下次访问视图时从中检索视图。
让咱们谈谈Kotlin的集合。 由于咱们常常须要使用数据模型集合执行困难的操做。 例如,咱们可能有一个学生名单,咱们须要从中检索三个A级成绩的学生和两个B成绩的学生。
看看Kotlin的解决方案:
下面是咱们如何解决Java中的一样的问题:
这只是一个小例子,说明如何在Kotlin和Java中使用集合,但你能够看到差异! 你能想象若是咱们处理一个大项目的集合,Kotlin会有什么区别吗?
译者序:Kotlin相对于java的最大的优点,就是简洁,可是java9出来之后,一些繁琐的问题应该会获得必定的解决,同时若是现阶段使用Kotlin去开发android,经常使用的框架等等就不能使用了,可是学习Kotlin仍是有必要的,Kotlin的语言风格更现代化,语法直接继承ActionScript,以现代化的风格,解决Java多年的陈旧问题,省去了使用各种生态工具的麻烦,将主流编程语言向前推进了一步,再也不固守于C时代的语法形式。随着Kotlin的不断完善未来会成为和java相媲美的优秀的android开发语言。