我的kotlin文件:
class Chat(var name: String, var age: Int? = 18)
我的java文件只能这样做:
new Chat("John",18);
但我可以写这个吗?
new Chat("John");
答案 0 :(得分:17)
通常,如果您使用默认参数值编写Kotlin方法,它将仅在Java中显示为完整签名,并且所有参数都存在。如果您希望向Java调用者公开多个重载,可以使用@JvmOverloads注释。
因此,如果您只想在Java中使用Chat
初始化name
,则必须向构造函数添加@JvmOverloads
注释。
class Chat @JvmOverloads constructor(var name: String, var age: Int? = 18)
它将使用默认值为每个参数生成额外的重载。
public Chat(String name) {}
public Chat(String name, Integer age) {}