“如果你正在为Android开发寻找一种替代编程语言,那么应该试下Kotlin。它很容易在Android项目中替代Java或者同Java一起使用。”–Hathibelagal
Kotlin v1.0于2016年2月15日发布。这被认为是第一个官方稳定版本,并且JetBrains已准备从该版本开始的长期向后兼容性。
在Google I/O 2017中,Google宣布在Android上为Kotlin提供最佳支持。
时光如梭,Kotlin语言已经发布3年了,作为Android开发者来说,kotlin语言将成为不得不掌握的一项新语言,尤其时kotlin语言引入协程(Coroutine)这一特性之后,优势更加明显。
Kotlin+Mvvm这样的组合架构已逐渐成为主流,博主正在使用这一架构进行项目开发,代码量大大减少,框架结构清晰,推荐大家去学习掌握,后期我会将使用到项目中的这一架构独立出来成文,欢迎大家关注本博后续。
举个例子:
ResLogin.kt
class ResLogin {
var code = -1
var msg = ""
var token = ""
lateinit var retObj: RetObjBean
inner class RetObjBean {
var id = 0
var name = ""
}
}
对应的Json字符串:
{
"retCode": 0,
"retMsg" : "success",
"retObj ": {
"id":378,
"name":"admin"
},
"token" : "3b6abdb79b29d6ce33b71c9da5d30de6"
}
属性声明之后会自动生成get,set方法,我们使用的时候直接通过(类的实例.属性名)进行赋值和取值操作。
例如:
var login = ResLogin()
login.code = 0 //赋值 相当于set方法
print(login.retMsg) //取值 相当于get方法
与java类不一样的地方有4处:
声明属性变量的关键字,可以根据赋值自动推断属性的数据类型
这个关键字 是 late init 两个单词的组合,即延迟初始化的意思,不需要立即复制为null,而是等到需要用的时候再进行赋值操作。
注意:lateinit 修饰不可以修饰原始数据类型(byte,char,short ,int,long,float,double),但可以修饰String,及自定义的class类等。
当我们不添加此关键字就会报下面的错误。
lateinit 详解参考
与java的static class 声明静态内部类用法雷同,只是关键字不同,因为kotlin已经没有static关键字了。
声明一个为RetObjBean类型的retObj属性。这个写法很奇怪,属性的类型是:后写式的,与java完全不同,所以需要习惯。
举个例子:
ProjectApplication .kt
class ProjectApplication : Application() {
override fun onCreate() {
super.onCreate()
LitePal.initialize(this)
context = this
}
companion object {
lateinit var context: Context
}
}
与java继承的写法不同之处有2处:
使用:+父类名()这样的写法来继承父类,和我们原来的写法不同,:代表继承的意思,Application代表父类名称, ()代表父类的默认构造函数。
重写父类的方法也有变化,override为重写关键字,fun代表声明一个方法的关键字与class关键一样,作用类同,onCreate为方法名,()为形参。
我们关注下这段代码:
companion object {
lateinit var context: Context
}
companion object :翻译 成 伴随对象的意思, 属于类的本身,所以 companion object 是不能脱离类而定义在全局之中。
它类似 Java 里的 static 变量,直接类名打点调用。
如:
举个例子:
/**
* 日期格式化
*
* @param date 需要格式化的日期
* @param pattern 时间格式,如:yyyy-MM-dd HH:mm:ss
* @return 返回格式化后的时间字符串
*/
fun format(date: Date, pattern: String): String {
val sdf = SimpleDateFormat(pattern)
return sdf.format(date)
}
可以看到形参的声明和属性声明一样都是采用:参数类型在冒号之后。
注意函数的返回值信息,直接跟在函数的小括号之后用(:返回值类型)的方式。
调用和java是一样的。
和java的写法有一点区别,变成了in 和 … 关键字。
举个例子:
for (index in 0..3) {
print(index.toString())
}
输出结果:
0
1
2
3
本文内容都比较简单,kotlin语言的学习捷径,就是用它、用它、还是用它。只有熟练使用了,对应后面MVVM架构的结合将会大有裨益。
微信公众号:一粒尘埃的漫旅
里面有很多想对大家说的话,就像和朋友聊聊天。
写代码,做设计,聊生活,聊工作,聊职场。
我见到的世界是什么样子的?
搜索关注我吧。
公众号与博客的内容不同。