3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
一周前開始學習kotlin,現在已經在項目中開發使用了。我目前負責的項目老代碼非常多,之前的java代碼已經有十多萬行了。所以即便使用了kotlin,也只是在新建文件的代碼里使用,老代碼繼續用java。kotlin的好處就是完全兼容java,java調用kotlin,kotlin基本上無阻礙。先說說為什麼要轉kotlinGoogle已經明確kotlin為第一官方語言。我相信Google的決意,就像當初毫不猶豫的拋棄eclipse轉向as。kotlin已經是不可避免的大勢所趨了。Kotlin與java代碼完全兼容。使用kotlin就好像只是增加了一個庫。打個比方,Rxjava比較難上手吧,不懂Rxjava的人看Rxjava像看天書,更不知從何寫起。kotlin學起來比Rxjava簡單的多。作為一名程序猿,我是非常追求代碼的簡潔高效。在代碼簡潔上,kotlin簡直是神器,太和我心意了。由於要兼容低版本,之前就一直在用java的lambda表達式插件,但是很多java8的特性還是用不了。kotlin全部能做到,而且更好。在易理解的基礎上,能用1行代碼搞定的事我絕不會寫兩行。用了kotlin,我自己寫的很多基礎函數都用不著了。真正的Enjoy Coding!也說一下目前遇到的一些問題由於集成了kotlin包,apk會增大約0.5M。這看你的項目是否能接受了,我覺得還行。目前沒發現什麼大坑。在java-kotlin互相調用時要小心,koltin如果不註明,是強制不為空的。如果你的java代碼有良好的習慣,出入參都註明了@Nullable @Nonnull,就沒什麼問題了安裝與配置參考kotlin官網我的android studio 沒有升級3.0預覽版,使用的還是2.3版本。首先更新kotlin語言插件工程里添加如下插件配置然後是依賴路徑最後是編譯依賴的倉庫,用著這個就行了。注意幾點:如果之前使用了依賴於註解的庫如Dragger,databinding等,需要額外的配置,詳情請參考官網Anko 是一個封裝了很多android操作的庫,比如ui操作、非同步操作、資料庫操作等等。不過我目前覺得還用不著,就沒加。感興趣的同學可以自己去添加。ok, 可以進入kotlin世界了!我主要是參考了這本書 《Kotlin for Android developers》 ,加上一些自己的理解。內容不多,看幾遍就記得差不多了。剛學習kotlin時可以下載下來,使用時隨時查閱。Koltin的類kotlin的變數申明 val 是不可變變數,相當於java里的final。var是可變變數,一般情況盡量使用val 。如果使用var一般都需要判空這裡有個小坑,如果沒加?傳入了空參數是,kotlin會強制判空拋異常。只要是Java語言有交互的參數,除非是100%確定不為空,否則請務必都加上安全操作符?。類繼承添加其他構造函數另外,kotlin不需要new操作符了,創建類直接調用其構造方法,就像使用普通函數那樣。val view = CustomView(context, attrs)Kotlin的方法方法申明差不多,動手寫一下很快就明白了。默認參數特別好用! 終於可以不用寫一大堆同名函數了動態方法擴展相當於將一大堆Util換種寫法比如非同步載入圖片的封裝,java這樣寫kotlin這樣寫:注意一點在java里,所有的方法都要在聲明在類里,一般一個類也只能有一個pulic方法。kotlin的方法可以獨立放在類外面,左右全局使用,比如前面提到ImageView擴展方法就要單獨放在類外部。kotlin一個文件可以申明多個全局方法,聲明多個public類。就是說,很多東西都能放在kotlin一個文件里。Koltin的Null處理使用安全操作符?可以省略很多無意義判空操作不多說,直接上代碼,一看就都明白了。以前這樣寫現在這樣寫靜態常量,靜態函數,單例如果一個類里都是靜態常量和靜態函數,直接在最外面寫如果是在普通類里有靜態變數,以及單例,這樣寫這樣調用kotlin的inline(內聯)函數內聯函數與一般的函數不同,在編譯時會做替換,少了普通函數調用的壓棧出棧,更高效。因為是替換,所以可以識別傳入的泛型比如直接這樣調用可以傳入代碼塊,比如一個非同步線程操作的代碼塊Kotlin基礎庫里大量的便捷操作以及Anko庫里很多操作都是使用inline函數完成的。常用的when, apply, let,以及對list數組封裝的各種操作firstOrNull,filter等都是內聯函數完成的。Koltin函數需要傳入的代碼塊可以直接放在函數名的大括弧里,不需要再用小擴號包起來。這樣的話,很多調用就非常簡潔比如Anko庫里的async, uiThread ,非同步操作的寫法比Rxjava簡單的多!而且其寫法很巧妙,只保存了外部Activity的弱引用,如果在非同步執行過程中Activity銷毀了uiThread則不會調用,防止內存泄漏。FindViewById由於有了插件kotlin-android-extensions.Activity里可以這樣寫,不需要在額外申明TextView變數了。所以注意xml文件里id的命名使用駝峰寫法Adapter里這樣寫, ViewHolder完全不需要了其他注意在kotlin中== 相當於java中的equal函數,=== 相當於java中的==。不過一般情況加==就夠了。kotlin中沒有基本類型,所有的如Int,Long都是對象。kotlin中沒有三元操作符。可以用if else,或者 ?:代替。java:kotlin:?:表示先判斷前面是否為空,為空的話就返回後面的因為都是基於JVM,Kotlin的所有操作java當然都能做到,但是kotlin更簡潔容易理解!

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦