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