У меня есть класс с сеттерами @JvmSynthetic
, чтобы обеспечить только беглые сеттеры, подобные построителю, для Java клиентов:
class PersonBuilder {
@set:JvmSynthetic // hide a void setter from Java
var age: Int? = null
@set:JvmSynthetic
var name: String? = null
fun setAge(age: Int?) = apply { this.age = age }
fun setName(name: String?) = apply { this.name = name }
fun build() = Person(age!!, name!!)
}
И назовите его так на стороне Java:
new PersonBuilder()
.setAge(22) // <- "error"
.setName("Peter")
.build();
Он компилируется и запускается, но Android Studio показывает ошибку « Неоднозначный вызов метода. Оба setAge (Integer) в PersonBuilder и setAge (Integer) в PersonBuilder соответствуют » и не предоставляет никаких автопредложений и форматирования кода после этой "ошибки".