Kotlin簡介
官網(wǎng)對Kotlin的介紹是:
Statically typed programming language for modern multiplatform applications
100% interoperable with Java? and Android?
提供多平臺應(yīng)用支持的靜態(tài)類型編程語言赁严”宋冢可與Java和Android進行100%互操作盼忌。
為什么要使用Kotlin
- 簡潔(Concise):
創(chuàng)建一個包含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+版本就可以支持惊楼。
創(chuàng)建一個單例對象:
object ThisIsASingleton {
val companyName: String = "JetBrains"
}
- 安全(Safe)
去除那些可能導致數(shù)十億美元損失的令人討厭的空指針異常玖瘸。
var output: String
output = null // Compilation error
Kotlin可以保護你免受使用空類型對象的誤操作吐句。
val name: String? = null // Nullable type
println(name.length()) // Compilation error
如果你檢測到一個類型是正確的,編譯器會自動幫你轉(zhuǎn)換店读。
fun calculateTotal(obj: Any) { //此處的Any相當于Java的Object
if (obj is Invoice)
obj.calculateTotal() //直接調(diào)用嗦枢,無需手動進行類型轉(zhuǎn)換:((Invoice)obj).calculateTotal()
}
-
互操作(Interoperable)
可以在Kotlin中使用任意現(xiàn)存的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)
每種語言都需要相應(yīng)的開發(fā)工具,這點在JetBrains做的尤其最出色趴久。
Kotlin目前提供了五種編寫方式: