在Java中调用Kotlin时,如何省略具有默认值的构造函数参数?

2022-09-01 18:56:12

我的 kotlin 文件:

class Chat(var name: String, var age: Int? = 18)

我的java文件只能这样做:

new Chat("John",18);

但是我可以写这个吗?

new Chat("John");

答案 1

来自 Kotlin 文档

通常,如果您使用默认参数值编写 Kotlin 方法,它将在 Java 中仅作为完整签名可见,并且存在所有参数。如果您希望向 Java 调用方公开多个重载,则可以使用@JvmOverloads注释。

因此,如果您只想在Java中进行初始化,则必须向构造函数添加注释。Chatname@JvmOverloads

class Chat @JvmOverloads constructor(var name: String, var age: Int? = 18)

它将为每个具有默认值的参数生成额外的重载。

public Chat(String name) {}
public Chat(String name, Integer age) {}

答案 2

推荐