Kotlin学习(8)→增强系统函数

在期待着郭霖先生的《第一行代码(第三版)》时,意识到自己需要补充必要的Kotlin知识。现在写文章分享自己学习Kotlin基础知识的过程,争取拿到书之后能早日上手。
使用的软件是IDEA 2019,文章中如有错误或者欠缺的地方,欢迎批评指正。
(参考书为《Kotlin从零到精通Android开发》,欧阳燊著,清华大学出版社2018年4月第一版,ISBN 978-7-302-49814-8)。感谢欧阳先生的优秀教材。

1、拓展函数

有些时候,系统类中提供的方法不能满足我们所有的需求。这时候,Java开发者往往会写自己的工具类,但是这样会比较繁琐。例如,我需要有某种比较字符串的方法,新写一个类会比较麻烦,既然都是对字符串操作,能不能将自己写的函数加入到系统String类中呢?
Kotlin允许这样做,给开发者提供了极大的方便。
例如,现在要有一个方法,需要对所有类型的数组交换指定位置的两个元素。
现在,就可以有以下的解决方案:


拓展函数例子

可以看到,要想在系统类中加入自己定义的函数,方法是:系统类名.函数名,接着,这里的this代表使用这个方法的对象名,这里即调用这个函数的数组。在这里,给定了两个参数作为数组的下标,交换这两个位置的数据的值。
调用的时候,系统拓展函数需要借助对象调用或者通过匿名对象调用。
例如Date类构造函数之一为Date(),有拓展函数getNowDate(),调用该拓展函数的方式可以是:

Date().getNowDate()

2、单例对象与函数

调用系统函数的方式稍显复杂,需要先构造对象才能使用。Kotlin和Java中的Util工具类类似,提供了单例对象的办法,可以直接通过单例对象名来调用其中的函数。下面给出例子,获取当前日期:

单例对象获取当前日期

可以看到,单例对象声明关键字为object,其他部分和类相同,使用时,通过单例对象名调用,相当于Java中的静态函数。这种方法更适合写工具类,调用起来非常方便。
输出结果:
2020-01-21

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容