Kotlin從入門到跑路(一)

2020-10-02 12:00:01

Kotlin從入門到跑路(一)


那個Kotlin語言不是越來越火了嗎,但是自己的Android專案中也暫時沒有用到Kotlin作為主流的開發語言,所以就想自己跟著檔案來學習一下,看看這個東西有多麼的香。
Kotlin裡面對基本資料型別的定義沒有Java那麼具有強制性的宣告,只用一個val就行了,讓我想到了js裡面的var。可是當我想看一下這個資料到底是什麼型別時,就給我報了以下Exception:

kotlin.jvm.KotlinReflectionNotSupportedError: Kotlin reflection implementation is not found at runtime. Make sure you have kotlin-reflect

這個時候我就懵逼了,我就建立了一個新的工程,寫了一個這個fun就直接給我報錯了?這Kotlin還怎麼玩下去(來自萌新的疑惑)?

fun main(){
    baseType()
}
fun baseType() {
    val num1 = -1.45 
    printType(num1)
}
fun printType(param:Any){
    println("$param is ${param::class.simpleName} type")
}

然後我們去看這個Exception,是說我們缺少了kotlin-reflect這個依賴。那麼這裡的kotlin-reflect到底是個什麼東西呢?

反射是指計算機程式在執行時(Run time)可以存取、檢測和修改它本身狀態或行為的一種能力。Kotlin使函數和屬性成為語言中頭等公民,且以近似函數式或響應式方式內省屬性和函數(如執行時屬性名或型別;函數名或型別)
在Java平臺上,需要使用反射特性的執行時元件為獨立的JAR檔案(kotlin-reflect.jar),目的是降低不需要使用反射的應用包的大小。如果要使用反射,首先需要保證專案中已新增相應的.jar檔案。

那麼我們就去app Module下面的build.gradle檔案裡面新增一下kotlin-reflect依賴就可以了。程式碼如下:

dependencies {
    //...
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
}

bingo,這樣我們的程式就能正常執行了(真難)。輸出:
在這裡插入圖片描述
不過話說回來,Kotlin的程式碼量是真的少,減少了java中那些沒必要的模板程式碼,大大提升了我們的開發效率。