Property setter con diferente tipo

Considerando el siguiente ejemplo, ¿es posible tener un setter para x que acepte un Int y otro que acepte un Double ?

 class Test(x: Float) { var x: Float = x get() { return field } set(value) { // 'value' is of type 'Float' field = value } } 

Motivo: si deseo asignar un nuevo valor a x , siempre debo adjuntar el sufijo f a cada asignación, es decir,

 var v = Test(12f) vx = 11 // error: 'The integer literal does not conform to the expected type Float' vx = 11.0 // error: 'The floating-point literal does not conform to the expected type Float' vx = 11f // ok 

Aunque no puedes sobrecargar al colocador, puedes aprovechar la interfaz Number y simplemente aceptar todos los numbers y convertirlos en flotantes:

 class Test(x: Float) { var x: Number = x get() { return field } set(value) { // 'value' is of type 'Number' field = value.toFloat() } } 

Esto significa que no solo se aceptan Float , Int y Double , sino también Byte , Short , BigInteger , BigDecimal , AtomicInteger , AtomicLong , AtomicDouble y cualquier otra class que implemente Number .

Qué pasa:

 class Test(x: Float) { var x: Float = x get() { return field } set(value) { // 'value' is of type 'Float' field = value } fun setX(value: Int) { x = value.toFloat() } } 
  • Kotlin: ¿Cómo puedo get la class de delegación de una propiedad miembro?
  • Al crear una interfaz en Kotlin, ¿importa si las properties tienen get / set?
  • Kotlin getter setter sin campo
  • Kotlin delegar propiedad por perezoso que es hilo local
  • Crear un propio DataSource con properties de resorte
  • Propiedad protegida abstracta Kotlin
  • Kotlin - Inicialización de propiedad usando "por perezoso" vs. "tardío"
  • Alias ​​en línea para la function de Kotlin que incluye generics
  • Propiedad observable que permite agregar observadores en time de ejecución
  • Kotlin: cómo acceder a las properties en el constructor
  • Convierta variables estáticas de Java a Kotlin