Kotlin java互操作性与使用注释的默认参数是可能的,即
@JvmOverloads
示例,我可以从Java类调用这个Kotlin函数。
@JvmOverloads
int findVolume(length:Int, breadth:Int, height:Int = 20): Int {
retrun length*breadth*height
}
//从Java类调用。
KotlingFileName.findVolume(5, 10)// No problem here, possible, third param is optional
但是对于命名形参则不可能。
@JvmOverloads
int findVolume(length:Int, breadth:Int, height:Int = 20): Int
{
retrun length*breadth*height
}
//从Java调用
KotlingFileName.findVolume(length=5,breadth= 10, height=20) // Not possible, why?
Java不支持命名参数——这是最简单的。
默认参数由生成的字节码容纳。Kotlin编译器使用默认参数生成该方法的多个版本。您的示例调用Java方法的三个参数版本,其中第三个参数分配给默认参数。