Kotlin Overview
Kotlin是由JetBrains开发,基于JVM的新的编程语言,在Apache许可下已开源。在Google I/O 2017中,Google宣布Kotlin成为Android的官方开发语言。Kotlin是兼容Java的语言,与Java可以百分百互操作。Kotlin是对现有的java的扩展、增强,相比Java,Kotlin更简洁、更安全、更具表达性,吸收了很多现代编程语言的特性,如类型推断、扩展函数、函数式编程支持等。
简洁
变量不需要声明类型,kotlin可以根据值自动推断出类型
var varInt = 1 //自动推断出变量类型为整数
var varString = "string" //自动推断出变量类型为字符串
var a: String = "initial" //指明类型
val b: Int = 1 //只读变量
var c = ArrayList<String>() //不需要new
声明一个数据类只需一行代码(自动生成get、set、equals、hashCode、toString、componentN及copy函数)
data class User (val name: String,val age: Int)
想实现单例?
object Singleton {
val property = "singleton"
... ...
}
集合操作?Kotlin提供了大量集合操作符,一行代码搞定一个操作。
val numbers = listOf(1, -1, 2)
numbers.filter { it > 0 } == listOf(1, 2) //筛选过滤
numbers.map { it * it } == listOf(1, 1, 4) //生成新的集合
//以上只是一部分集合操作符
空指针安全
kotlin加入了空值判断,当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空。一个声明为可空的变量或参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过。
val str: String? = null // 可空类型
println(str.length()) // 编译错误
println(str?.length()) //打印null
println(str!!.length()) //抛异常
Lambdas
Kotlin支持Lambdas表达式
view.setOnClickListener { doSomething() } //如不需用到参数可直接省略
view.setOnClickListener { v->doSomething(v) }
val sum = { x: Int, y: Int -> x + y }
ints.filter { it>0 } //it指代ints数列中的项
高阶函数
在Kotlin中高阶函数可以作为参数和或者返回值。
//body是一个高阶函数,作为参数以及返回值
fun <T> lock(lock: Lock, body: () -> T): T {
lock.lock()
try {
return body()
}
finally {
lock.unlock()
}
}
互操作
Kotlin可与Java进行100%的互操作,相互可以无缝调用,java程序员可以快速的学习熟练使用Kotlin进行开发。
其他
以上只是Kotlin的一部分优秀特性,如函数、属性扩展、内联函数、委托属性等等。Kotlin提供了大量语法糖,使用java需要10几行代码实现,使用kotlin只需一行。学习直通车:Kotlin官网,Kotlin中文网,Kotlin Try Online。