在Java中调用Kotlin时,如何省略具有默认值的构造函数参数?
我的 kotlin 文件:
class Chat(var name: String, var age: Int? = 18)
我的java文件只能这样做:
new Chat("John",18);
但是我可以写这个吗?
new Chat("John");
我的 kotlin 文件:
class Chat(var name: String, var age: Int? = 18)
我的java文件只能这样做:
new Chat("John",18);
但是我可以写这个吗?
new Chat("John");
来自 Kotlin 文档:
通常,如果您使用默认参数值编写 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) {}