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