![](https://img.haomeiwen.com/i8207483/37344b802dc423f8.jpg)
图左侧为 kotlin 的代码,而右侧为 java 的代码,如果您是有 Java 背景的,可以对比来看一看。
![](https://img.haomeiwen.com/i8207483/42105969e5abb770.jpg)
kotlin 和老大的关系非同一般,这是 我们可以通过选中代码,然后右键选择,来将 java 的代码转换为 kotlin 的代码。
![](https://img.haomeiwen.com/i8207483/129af4f371bcd0f3.jpg)
转后的代码,简单明了,这也是他能挖老大墙角的原因。
![](https://img.haomeiwen.com/i8207483/1b5612831fa4e9ca.jpg)
我们通常会通过分隔符,这里是空格,将字符串拆分为集合,然后根据需要获取我们想要的信息,这种场景想必大家都遇到过。下面的处理方式,大气点叫解决方案。大家可能再熟悉不过了。
![](https://img.haomeiwen.com/i8207483/3b76ce9477d75158.jpg)
我们可以定义数据类型,这样相对数组更直接和容易理解。
![](https://img.haomeiwen.com/i8207483/eae7c5a9b912be63.jpg)
我们可以 kotlin 提供一种用于数据结构的类 叫做 data class。
![](https://img.haomeiwen.com/i8207483/78f61e987e33a32a.jpg)
上面的代码对于 java developer 也是再熟悉不过了。
在 java 中我们通过 setter 和 getter 将私有变量取值和赋值进行控制。
![](https://img.haomeiwen.com/i8207483/7a4309b9e3c15e18.jpg)
这里 set 无需带属性名,field 代表字段。今天分享主要让大家学会如何用 kotlin way 来写代码
![](https://img.haomeiwen.com/i8207483/3707c5d9f3680355.jpg)
对于很多公用的属性,我们希望计算一次然后多次使用,再次使用时无需计算,例如我们终端设备的信息,在这里只需要获取一次就够了,我们就可以用到 kotlin 的代理类来实现。 代理类通过 by 这个关键字来实现。这里用到了 lazy 表示只有在第一次访问才会计算。
![](https://img.haomeiwen.com/i8207483/421847af4ca19b6c.jpg)
![](https://img.haomeiwen.com/i8207483/3e3a3e7a8c47999c.jpg)
上面我们可以通过代理来实现观察者模式。
![](https://img.haomeiwen.com/i8207483/f142ebe2f57c5c8f.jpg)
![](https://img.haomeiwen.com/i8207483/c975ab9e69871582.jpg)
下图代码似成相识,特别你有 java 背景,会倍感亲切。我们看一看如何用 kotlin way 来实现。我们通常会在项目中写一些工具类来提供一些通用的方法。看这里的 StringUtil 提供一些对字符串操作的方法。
![](https://img.haomeiwen.com/i8207483/684f8e7441b151b7.jpg)
大家多数都是从 java 转而学习 kotlin 。这里值得注意的是 kotlin 支持多范式编程的语言,我们需要用 kotlin 的方式来写程序,如果我们用 kotlin 来写代码,思维还是 java 方式。那就失去用 kotlin 的意义了。这里我们 object 来代替高成本的 class。
![](https://img.haomeiwen.com/i8207483/c56b4530316a9be0.jpg)
看看这些代码,我们就又回到了 java。
![](https://img.haomeiwen.com/i8207483/a1e6ab170ad038b3.jpg)
其实在 kotlin 我们很容易就可以扩展我们基本数据类型的方法。来扩展其一些方法。
![](https://img.haomeiwen.com/i8207483/f5ab8a7ceef61732.jpg)
多态在 java 我们通常需要根据参数个数的不同,写多个同名的函数实现多态。这里我们给参数默认值来实现多态。
![](https://img.haomeiwen.com/i8207483/4bf09b742bac98ae.jpg)
![](https://img.haomeiwen.com/i8207483/2be3c518b8047ae5.jpg)
网友评论