不知不覺用kt開發安卓已經兩年多了,在此分享一下自己的經驗。個人覺得使用kt開發安卓還是比使用java更加的方便推薦嘗試一下。
下面爲是我認爲kotlin在安卓開發的優勢
- 減少大量的findviewbyid() (提高編碼效率)
- 更精簡的lambda表達式 (使代碼看起來更簡潔)
- 強大的when語句(可使用變量作爲匹配項),可帶返回值
- 空安全機制 (減少各種空指針異常,減少繁瑣的空判斷)
- 智能轉換機制 (提高編碼效率)
- 豐富的擴展函數 (提高編碼效率)
- Dataclass
- 內聯函數 (提高性能)
二、java與kotlin不同之處
1.Kotlin 聲明的變量 使用 統一使用 var val(相當於java fanal) 聲明只讀常量,方式爲 var/ val 變量名:變量類型[?](是否可空)在kotlin中 會給屬性默認生成get set 在使用kt對象.屬性時實際會調用kotlin的get和set方法(注意:當變量聲明爲private時 生成的get set方法也爲private所以外部無法調用)
2.kotlin 無基本數據類型,一切皆對象 也沒有static如需使用java中一樣的靜態類 則使用 object,使用匿名內部類時也需要使用object 關鍵字聲明
3.kolin 方法 使用fun 關鍵字聲明 格式爲 fun funName(var param):返回值。 構造方法使用constructor 聲明。Kotlin允許給參數默認值如何
4.對象使用class聲明 並默認爲不可繼承如何需要繼承則需要open關鍵字作爲修飾
data class 爲對應的爲java的bean類 自動從寫了toString. Equals, copy等方法
5.擴展。爲java中沒有的特性可分爲擴展函數和擴展屬性。如對textview擴展一個方法判斷textview的文本是否爲空:
fun TextView.isEmpty() : Boolean{
return TextUtils.isEmpty(this.text.toString())
}
對textView擴展屬性:
var TextView.mvalue:String
get() = this.text.toString()
set(value){
this.text=value
}
6 when與switch 在switch中case 語句只能使用常量。這導致在lib中不能使用控件id作爲分支。when 可以使用變量,表達式,區間等作爲分支,並且when語句支持返回值(kt的if語句也支持)
7.operator重載運算操作符。如給opint類+=操作符