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() } } 
  • ¿Por qué el código que inicializa una propiedad de interfaz variable no se codificará en la compilation del bloque init?
  • Convierta variables estáticas de Java a Kotlin
  • Función de extensión Kotlin en propiedad mutable
  • Al crear una interfaz en Kotlin, ¿importa si las properties tienen get / set?
  • Propiedad observable que permite agregar observadores en time de ejecución
  • Kotlin: ¿Cómo puedo get la class de delegación de una propiedad miembro?
  • Obtención de información de KProperty dentro de la propiedad delegada fuera de las funciones getValue () y setValue ()
  • Kotlin: cómo acceder a las properties en el constructor
  • No se puede usar getter personalizado con propiedad delegada
  • Kotlin - Inicialización de propiedad usando "por perezoso" vs. "tardío"
  • Kotlin getter setter sin campo