我的kotlin文件:
class Chat(var name: String, var age: Int? = 18)
Run Code Online (Sandbox Code Playgroud)
我的java文件只能这样做:
new Chat("John",18);
Run Code Online (Sandbox Code Playgroud)
但我可以写这个吗?
new Chat("John");
Run Code Online (Sandbox Code Playgroud)
Bak*_*aii 17
来自Kotlin文件:
通常,如果您使用默认参数值编写Kotlin方法,则它将仅在Java中显示为完整签名,并且存在所有参数.如果您希望向Java调用者公开多个重载,则可以使用@JvmOverloads批注.
所以,如果你要初始化Chat与name仅在Java中,你必须添加@JvmOverloads注释构造函数.
class Chat @JvmOverloads constructor(var name: String, var age: Int? = 18)
Run Code Online (Sandbox Code Playgroud)
它将使用默认值为每个参数生成额外的重载.
public Chat(String name) {}
public Chat(String name, Integer age) {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1439 次 |
| 最近记录: |