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中那些沒必要的模板程式碼,大大提升了我們的開發效率。