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

我的kotlin文件:

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

我的Java文件只能做到这一点:

 new Chat("John",18); 

但是我能写这个吗?

 new Chat("John"); 

One Solution collect form web for “在Java中调用Kotlin时如何省略构造函数参数的默认值?”

从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) {} 
  • 如何将字符串转换为长在Kotlin?
  • Kotlin负模块返回负值
  • 为什么平台types不匹配nonnull对象
  • ListView可以出现在Activity中,但不能出现在Fragment中
  • 将可空types转换为不可空types?
  • Kotlin到Java(图书馆帮助)
  • Intellij没有测试发现Kotlin
  • 正则expression式匹配字符串
  • 布尔 - 在Kotlin中的Int转换
  • Kotlin和jvm:对象OR类实例?
  • 通过枚举类属性Kotlin进行过滤
  • Kotlin language will be the best programming language for Android.