Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發:為什麼要使用Kotlin?

Android開發:為什麼要使用Kotlin?

編輯:關於Android編程

在使用Kotlin進行了一段時間的Android開發之後,我深深地體驗到了它的美好,覺得是時候把它拿出來安利一下了。

1. Kotlin是什麼?

Kotlin是一門編程語言,由JetBrains公司開發的。JetBrains就是那個開發了無數個牛逼IDE的公司,Android Studio就是建立在他家的Intellij之上的。
Kotlin是基於JVM的,所以開發者可以什麼方便地用它來進行Android開發——支持Kotlin和Java的混合編寫。

2. 為什麼要使用Kotlin?

我覺得它之所以適合Android開發,主要是因為以下的特點:

2.1 簡潔、優雅

寫了很多年的Java之後,再寫Kotlin,真是覺得如沐春風。
除了不用寫分號以及天然支持Lambda表達式之外,它的語法本身就比Java簡潔許多。

舉幾個小例子,比如,類型推導:

    val a : Int = 1 // 正常的聲明、賦值
    val b = 2 // 類型推導,可以省略Int聲明 

    /* 定義函數:自動推導函數的返回值類型 */
    fun sum(a: Int, b: Int) = a + b

字符串模板:

    val name = "Barry"
    val age = 15
    print("My name is ${name}, I am ${age} ")  // 會打印出: My name is Barry, I am 15

下面這個例子,可以對比體會一下他們的不同—— 遍歷一個列表,打印其中的奇數。
如果用java寫:

List list = Arrays.asList("H",1,3,10,5,9,20,199);
for(Object number : list){
    if(!(number instanceof  Integer)) {
        continue;
    }
    if((Integer)number % 2 == 0){
        System.out.println((Integer)number);
    }
}

而用Kotlin的話,顯然會更清晰、簡潔、優雅(注意這裡的lambda表達式):

val list = Arrays.asList("H", 1, 3, 10, 5, 9, 20, 199)
list.filter { it is Int }
        .filter { it as Int % 2 != 0 }
        .forEach { println(it) }

在Kotlin中,諸如此類的語法糖還有很多:函數默認值、內聯函數、ranges、kv遍歷Map、lazy屬性、數據對象聲明、運算符重載…… 如果展開來說的話,每個都可以說很多。

當習慣這些之後,很容易就會有這種感覺:寫Kotlin相比較寫Java,就像高鐵之於綠皮火車、iPhone之於山寨機、4K屏之於800*600……沒有它之前覺得老的東西也能用,但是一旦習慣,再改回去的話就覺得渾身難受。

另外,簡潔的語法不僅使代碼讀起來清晰流暢,也讓它自然簡單易學——基本上花上半天時間,把官方文檔看上一遍,就可以開始coding了。

2.2 安全

在Java裡,我們常常要進行許多非空判斷:

public void fun1 (String str){
   if(str != null) {
       System.out.println("Length = " + str.length());
   }
}

而在Kotlin中,即使不進行這些額外的判斷,代碼也是健壯的:

// 如果str=null,會打印:Length = null
fun fun1 (str: String?) {
    println("Length = " + str?.length) 
}

還有,Java中經常出現的ClassCastException,在Kotlin中,也可以通過安全的類型轉換進行避免:

val l2 = listOf("A",1,3,6,8,'c')
l2.forEach { println(it as? Int) }

2.3 函數、屬性擴展

Kotlin提供了一種方法——可以在既不需要繼承父類,也不需要使用類似裝飾器設計模式的情況下,對類進行擴展。簡直是黑科技!
比如,給String類添加一個擴展方法,用以返回它的第一個字符。只需要這樣:

// 函數擴展
fun String.firstChar() : String? {
    return if(this.length > 0) this.substring(0,1) else "NULL"
}

這個擴展函數可以在任何地方聲明,然後其他任何地方String對象就都可以使用這個方法了:

val s = "Hello".firstChar())  // s的值為"H"
println("你好".firstChar())   // 打印: 你
println("".firstChar())   // 打印: NULL

2.4 兼容Java

一個語言能否被廣泛使用,除了它本身要好用之外,還要有一個良好的生態。 尤其在是如今,各種應用層的開發實際上很依賴於各種開源庫、第三方組件等,如果一個應用層的語言沒有這些支持的話,是很難被廣泛使用的。
而對於Kotlin來說,這個問題是不存在的,因為它跟Java是無縫連接的,可以相互操作。
這意味著:

Kotlin可以使用所有用Java寫的組件:(RxJava、Retrofit、EventBus、Fresco……這些都不是問題!) 在現有的用Java寫的項目中可以局部使用Kotlin,混合開發 Java->Kotlin,可以逐步遷移而不是非黑即白 使用Kotlin開發時,萬一遇到問題,可以瞬間切換回Java~

2.5 工具完善

來,我們再理一下這個關系樹:
JetBrains
|–> Intellij IDEA –> Android Studio
|–> Kotlin
Kotlin是JetBrains公司出的;JetBrains向來以做各種牛逼的IDE著稱;Android的官方開發工具AndroidStudio就是基於JetBrains公司出品的Intellij改造的。
↑ 以上是背景。
從實際體驗角度來說,Kotlin的開發也是十分方便快捷的。
只需花幾分鐘給AndroidStudio安裝一個Kotlin的擴展插件,就可以迅速開始體驗使用Kotlin的快感了。
一開始的時候,你甚至都不需要會使用Kotlin!這是因為Kotlin插件提供了一個Java->Kotlin的轉換功能,可以一鍵把現有的Java代碼轉換為Kotlin代碼,你可以通過閱讀它轉換後的Kotlin代碼,進行學習。
(實際上,我在學習Kotlin的時候,就大量使用了這種方法:當我不知道某個功能用Kotlin怎麼寫的時候,就會先用Java把它寫出來,然後使用轉換功能,生成Kotlin代碼,從而就知道了Kotlin的寫法)

3. 如何開始

因為是一篇純粹的說明文,所以我把如何開始單獨抽離出來,寫了這篇文章:《只需五分鐘,開始使用Kotlin開發Android》

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved