1. 程式人生 > >Android kotlin初體驗

Android kotlin初體驗

Android kotlin初體驗

前言:2017年kotlin的橫空出世以來相信對於許多android開發者來說是又愛又恨;不管怎麼說,既然google官方支援這門語言為android官方語言,那麼對於我們andoid開發者來說還是要花點時間去學習一下;Kotlin是一個基於JVM的新的程式語言,由JetBrains開發。JetBrains,作為目前廣受歡迎的Java IDE IntelliJ的提供商,在Apache許可下已經開源其Kotlin程式語言。與Java相比,Kotlin的語法更簡潔、更具表達性,而且提供了更多的特性,比如,高階函式、操作符過載、字串模板。它與Java高度可互操作,可以同時用在一個專案中。

  最近公司的專案比較大,因而考慮到維護成本,選擇使用kotlin進行開發,那麼今天就來說一下kotlin的一些基本的使用

建立一個類

通常我們建立一個java檔案的時候只需new java class:


那麼我們kotlin建立的時候需要指明為class;當你需要的是一個java bean的時候可以指明為file檔案:


繼承(extends)與實現(implements)

Java語法中的繼承我們都是通過關鍵字extends,實現某些介面都是通過implements,寫法上是這樣的:

kotlin語法中我們得變的這麼寫:

可以看到kotlin的繼承關係是通過 : 符號取代了我們java中的extends

關鍵字,如果你是想實現某個介面的話只需要跟在繼承關係後面跟上一個逗號  ,  即可, (注意:當然都是英文符號)

宣告變數

以往我們宣告一個全域性的成員變數是這樣的:private String mData; 那麼在kotlin裡,宣告一個成員變數的話需要通過關鍵字 var 或者val ,前者宣告的是值可改變,如果你所宣告的變數值是不變的可以使用val,這好比java中的final宣告一樣,注意val在建立的時候必須要初始化,因為在以後是不可以改變的。下面是kotlin中的變數宣告:

注:mDialog:BottomDialog?=null 這裡的 ? = null表示改物件可以為空,如果你不想為空的話可以是這麼寫:

mDialog = BottomDialog()

kotlin中的when表示式

kotlin中提供, when表達語句替代了javaswitch case,通常我們需要這麼來寫:

然而我們在kotlin中用when是這麼來寫的:

看起來還是比較簡潔的

fun關鍵字

Kotlin中為我們提供了fun關鍵字來宣告一個方法;java中我們寫一個方法需要通過void關鍵字或者明確返回型別,比如我們寫一個返回型別為String的方法:

那麼如果改為用kotlin就得是下面這麼寫:

fun 聲明瞭一個名為 getTextFormat方法,返回型別為String

startActivity的跳轉

java中的通過startAcivity來做跳轉,那麼kotlin同樣也是通過startActivity來做跳轉,不同的是java中指定Intent的跳轉類的寫法

java中的寫法:


Kotlin中的寫法:

我們可以看到指定跳轉的類需要用 ::class.java,而不是我們java通常的之間 .class,值得注意的是在java語法裡面想要得到一個物件需要通過new來獲取到一個物件,而在kotlin裡面直接命名 = 你需要的物件即可,即上面的 intent = Intent();如果是需要攜帶資料同樣的是通過 intent.putExtra()方法,這裡就不過細講了;

點選事件

Kotlin語法中的點選事件與java語法中的點選事件還大致沒什麼區別,setOnClickListener(this)這種寫法在Kotlin裡面也是可以的,不過studio會提示不建議這麼寫,官方推薦的寫法是 onClickListener = this 

內部類

java語法裡面,我們要宣告一個內部內在一個class裡面在宣告一個class的寫法為:

class TestActivity extends Activity{

  class TestRefreshReceiver extends BroadcastReceiver{

      @Override

       Public void onReceive(Context context, Intent intent){

    }

}

這是我們在java語法中的宣告一個廣播接收者的內部類,那麼在kotlin語法裡面,其宣告一個內部類需要藉助兩個關鍵字:internal inner,那麼的的寫法變成了下面這樣:

internal inner class TestActivity : BroadcastReceiver(){

    override fun onReceive(content: Content, intent: Intent){

    }

}

集合與陣列

java裡面我們用到的ArrayList集合,在kotlin裡面一樣沿用,只是語法上改為:arrayListof; 當你想要宣告一個ArrayList時可以這麼寫:

var mDatas = ArrayListOf<String>()

判斷集合不為空,kotlin不在是if(null!=mDatas), 而是 if(mDatas.isNotEmpty); 

另外我們還有經常用到的map,同樣也是指定為hashMapOf<>() 

這裡介紹一個String型別的陣列:以為我們開發都是 new String[]{},那麼換成kotlinvar mStrings = arrayOf(“”,””)

總結:kotlin語法只是變的更為簡潔,方便開發者維護,其語法上的大致在官網上都能找到;kotlinjava程式碼可以通用,不產生衝突,唯一需要注意的是kotlin語法上的規範,其實studio3.0以後支援kotlin語言可以將一個java檔案轉換為kotlin檔案,3.0以下需要自行配置外掛。

以上內容為自己所開發運用到的一些整理,大家有好的意見不妨留言相互討論,相互學習!!!!