【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q
當你在 Kotlin 程式語言中定義一個有預設參數的函數功能,並給它預設值,@JvmOverloads
可以自動產生多個重載版本的 Java 方法,每個版本都省略了部分參數,讓 Java 代碼可以更簡潔地呼叫這些方法,而不需要填寫所有參數。不會因為沒有預設值,而顯示錯誤。
檔名錯誤或檔案放置不正確的情況下,將會導致編譯錯誤或呼叫時的問題,需要特別留意:
在這個範例中,在 kotlinFun
函數上使用@JvmOverloads
註解該函數。這個註解的將告訴 Kotlin 編譯器要生成額外的重載函數,以便 Java 能夠以不同的方式呼叫這個函數,且不需要傳遞所有的參數。
package com.teachable.hkt //沒有設定 package 名稱,Java 無法順利呼叫使用
@JvmOverloads
fun kotlinFun(name: String = "HKT", score: Int = 100) {
println("學生姓名:$name, 分數:$score")
}
fun main() {
kotlinFun()
}
這段 Java 程式碼展示了如何呼叫 MainKt
物件中的 kotlinFun
函數。在第一個呼叫中,我們沒有傳遞任何參數,因為 @JvmOverloads
註解的存在,Kotlin 會自動生成一個不需要任何參數的版本供 Java 使用。而在第二個呼叫中,我們傳遞了兩個參數,這會調用接收兩個參數的版本。
package com.teachable.hkt;
public class JavaClassDemo {
public static void main(String[] args) {
MainKt.kotlinFun();
MainKt.kotlinFun("test", 66);
}
}