varargとArray<>の引数
関数の引数にvarargを使用した場合とArray<>を使用した場合とでは、JVMのシグネチャが同じになるようだ。
例えば以下のように同じ関数名で、引数がvararg args:Stringのものと、args:Array
fun hogehoge(args:Array<String>){ print("ほげほげA") } fun hogehoge(vararg args:String){ print("ほげほげB") }
このようにエラーになる。
エラー:(8, 1) Kotlin: Platform declaration clash: The following declarations have the same JVM signature (hogehoge([Ljava/lang/String;)V): fun hogehoge(args: Array<String>): Unit defined in marutk in file Main.kt fun hogehoge(vararg args: String): Unit defined in marutk in file Main.kt