前沿
《Kotlin for android developers》中文翻譯
摘抄自:https://github.com/wangjiegulu/kotlin-for-android-developers-zh/blob/master/SUMMARY.md
Kotlin的優(yōu)點
- 它更加易表現(xiàn):這是它最重要的優(yōu)點之一。你可以編寫少得多的代碼。
- 它更加安全:Kotlin是空安全的,也就是說在我們編譯時期就處理了各種null的情況,避免了執(zhí)行時異常。如果一個對象可以是null,則我們需要明確地指定它,然后在使用它之前檢查它是否是null。你可以節(jié)約很多調(diào)試空指針異常的時間,解決掉null引發(fā)的bug。
- 它是函數(shù)式的:Kotlin是基于面向?qū)ο蟮恼Z言。但是就如其他很多現(xiàn)代的語言那樣,它使用了很多函數(shù)式編程的概念,比如,使用lambda表達(dá)式來更方便地解決問題。其中一個很棒的特性就是Collections的處理方式。
- 它可以擴(kuò)展函數(shù):這意味著我們可以擴(kuò)展類的更多的特性,甚至我們沒有權(quán)限去訪問這個類中的代碼。
- 它是高度互操作性的:你可以繼續(xù)使用所有的你用Java寫的代碼和庫,因為兩個語言之間的互操作性是完美的。甚至可以在一個項目中使用Kotlin和Java兩種語言混合編程。
空安全
java代碼中我們必須通過非空判斷來避免NullPointerException,但是Kotlin是空安全的,我們需要借助安全操作符(?)來明確的指出一個對象是否能為空。
// 這里不能通過編譯. Artist 不能是null
var notNullArtist: Artist = null
// Artist 可以是 null
var artist: Artist? = null
// 無法編譯, artist可能是null,我們需要進(jìn)行處理
artist.print()
// 只要在artist != null時才會打印
artist?.print()
// 智能轉(zhuǎn)換. 如果我們在之前進(jìn)行了空檢查,則不需要使用安全調(diào)用操作符調(diào)用
if (artist != null) {
artist.print()
}
// 只有在確保artist不是null的情況下才能這么調(diào)用,否則它會拋出異常
artist!!.print()
// 使用Elvis操作符來給定一個在是null的情況下的替代值
val name = artist?.name ?: "empty"
注釋:Kotlin中var聲明一個變量,和js中類似;val是一個常量,但是有別于java中的final關(guān)鍵字
比如:var i : Int = 3 (int類型的變量等于3) val name:String = "zhangsan"(字符創(chuàng)常量name賦值zhangsan)
環(huán)境配置(Android Studio)
- 安裝Kotlin插件,安裝后重啟AS
安裝Kotlin插件.png
- 和平時你創(chuàng)建Android項目一樣創(chuàng)建一個Android Project
- 配置Gradle
- 在Project的build.gradle中加入
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-4"
Paste_Image.png
- 在Module的build.gradle中加入依賴
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-4"
compile "org.jetbrains.anko:anko-common:0.8.2"