生成默认参数值函数的重载
我们在Kotlin中写一个有默认参数值的 Kotlin 方法,它会对每一个有默认值的参数都生成一个重载函数。这样的Kotlin函数,在 Java 中调用的话,只会有一个所有参数都存在的完整参数签名方法可见。如果我们希望Java像Kotlin中一样可以调用多个重载,可以使用@JvmOverloads
注解。
下面我们来通过一个实例对比两者的区别:
这是一段Kotlin代码:
class OverridesFunWithDefaultParams {
fun f1(a: Int = 0, b: String = "B") {
}
@JvmOverloads fun f2(a: Int = 0, b: String = "B") {
}
}
函数f1 和 f2 都带有默认参数。测试代码如下:
@Test
public void testOverridesFunWithDefaultParams() {
OverridesFunWithDefaultParams ofdp = new OverridesFunWithDefaultParams();
ofdp.f1(1, "a");
ofdp.f2();
ofdp.f2(2);
ofdp.f2(2, "b");
}
这就是@JvmOverloads
注解的作用,编译器会处理这个注解所标注的函数,并为之生成额外的重载函数给Java调用。
当前内容版权归 JackChan1999 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 JackChan1999 .