在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) {}