在Java中调用Kotlin时如何省略构造函数参数的默认值?
我的kotlin文件:
class Chat(var name: String, var age: Int? = 18)
我的Java文件只能做到这一点:
new Chat("John",18);
但是我能写这个吗?
new Chat("John");
从Kotlin文件 :
通常情况下,如果您使用缺省参数值编写Kotlin方法,则只能在Java中以可见的方式显示所有参数。 如果您希望向Java调用者公开多个重载,则可以使用@JvmOverloads注释。
所以,如果你只想用Java初始化name
Chat
,你必须添加@JvmOverloads
注释到构造函数。
class Chat @JvmOverloads constructor(var name: String, var age: Int? = 18)
它将为每个参数生成额外的过载,并且具有默认值。
public Chat(String name) {} public Chat(String name, Integer age) {}