Kotlin简介
官网对Kotlin的介绍是:
Statically typed programming language for modern multiplatform applications
100% interoperable with Java™ and Android™
提供多平台应用支持的静态类型编程语言。可与Java和Android进行100%互操作。
为什么要使用Kotlin
- 简洁(Concise):
创建一个包含getters
, setters
, equals()
, hashCode()
, toString()
还有copy()
的POJO类,只需一行代码:
data class Customer(val name: String, val email: String, val company: String)
或者使用lambda表达式过滤一个list:
val positiveNumbers = list.filter { it > 0 }
Java是在java8中才引入了lambda表达式,而且由于类库兼容性等问题,在一些旧项目上,我们是无法使用这个特性的。但是Kotlin提供的lambda,只需JDK6+版本就可以支持。
创建一个单例对象:
object ThisIsASingleton {
val companyName: String = "JetBrains"
}
- 安全(Safe)
去除那些可能导致数十亿美元损失的令人讨厌的空指针异常。
var output: String
output = null // Compilation error
Kotlin可以保护你免受使用空类型对象的误操作。
val name: String? = null // Nullable type
println(name.length()) // Compilation error
如果你检测到一个类型是正确的,编译器会自动帮你转换。
fun calculateTotal(obj: Any) { //此处的Any相当于Java的Object
if (obj is Invoice)
obj.calculateTotal() //直接调用,无需手动进行类型转换:((Invoice)obj).calculateTotal()
}
-
互操作(Interoperable)
可以在Kotlin中使用任意现存的JVM类库,100%适配,包含SAM支持。
import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers
Flowable
.fromCallable {
Thread.sleep(1000) // imitate expensive computation
"Done"
}
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(::println, Throwable::printStackTrace)
无论是JVM还是JavaScript,只需使用Kotlin编写一次,然后你就可以在任何地方进行部署。
import kotlin.browser.window
fun onLoad() {
window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
}
- 工具支持友好(Tooling)
每种语言都需要相应的开发工具,这点在JetBrains做的尤其最出色。
Kotlin目前提供了五种编写方式:
网友评论