2017 年 Google I/O 大會上,Google 正式宣布 Kotlin 成為 Android 開發的官方一級語言。身為 Android 開發者,掌握 Kotlin 語法已成必修課。本文將從環境建置、變數定義、擴充函數、Parcelable 序列化、伴生物件、工具類撰寫以及 Activity 導航等核心概念,帶你快速上手 Kotlin 開發。
建立新專案時,直接勾選 Include Kotlin support 選項即可自動完成配置。
需手動安裝 Kotlin 外掛並配置 Gradle:
// app/build.gradle
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
// project/build.gradle
ext.kotlin_version = '1.1.2-3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
Kotlin 提供兩種變數宣告關鍵字:
final,編譯期決定值,運行期不可變更。Kotlin 支援類型推斷,宣告時可省略類型。所有變數預設為非空,若需允許 null,必須在類型後加上 ?(如 String?)。建議盡量設計為非空類型,減少空指針風險。
語法:fun 類型.函數名(參數) { ... }。範例:為 Context 新增 toast 方法。
fun Context.toast(message: String, length: Int = Toast.LENGTH_SHORT) {
Toast.makeText(this, message, length).show()
}
呼叫方式:context.toast("Hello"),無需繼承或修改原類別。
Kotlin 的 data class 搭配 Parcelable 可大幅簡化樣板碼:
data class UserBean(var name: String, var id: String) : Parcelable {
constructor(source: Parcel) : this(source.readString(), source.readString())
override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeString(name)
dest.writeString(id)
}
companion object {
@JvmField
val CREATOR: Parcelable.Creator<UserBean> = object : Parcelable.Creator<UserBean> {
override fun createFromParcel(source: Parcel) = UserBean(source)
override fun newArray(size: Int) = arrayOfNulls<UserBean>(size)
}
}
}
Kotlin 無 static 關鍵字。若需類別層級的函數或屬性,可在類別內宣告 companion object。其成員可直接透過類別名稱呼叫,相當於 Java 的 static 成員。
指示編譯器不產生 getter/setter,直接將屬性編譯為 Java 欄位,方便 Java 程式碼直接存取。
Kotlin 使用 object 關鍵字定義單例,替代 Java 的靜態工具類:
object ToastUtils {
fun toast(context: Context, message: String) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
}
呼叫:ToastUtils.toast(context, "msg")。
採用伴生物件封裝啟動邏輯,呼叫端無需知悉 Intent 細節:
class SecondActivity : AppCompatActivity() {
companion object {
const val EXTRA_KEY_USER = "extra.user"
fun navigateTo(context: Context, user: UserBean) {
val intent = Intent(context, SecondActivity::class.java).apply {
putExtra(EXTRA_KEY_USER, user)
}
context.startActivity(intent)
}
}
// ... onCreate 取資料
}
MainActivity 呼叫:SecondActivity.navigateTo(this, user)。
本文涵蓋 Kotlin 入門核心語法,包含變數、擴充函數、Parcelable、伴生物件、工具類與 Activity 導航。Kotlin 還有協程、密封類、擴充屬性等進階特性,待實戰中逐步深入。祝你 Kotlin 之旅順遂!