kotlin – conversión automática de types numéricos

En java , podemos asignar int a double , por ejemplo double x = 123 ;

En kotlin , tenemos un error comstackdo.

Pregunta: ¿Podemos habilitar la function de conversión automática en kotlin ? ¿Por qué kotlin no tiene esta característica por defecto?

 var x: Double = 123; // ERROR 

Un ejemplo más:

 fun foo(x: Double) { } fun main(args: Array<String>) { foo(123.0); // OK foo(123); // ERROR } 

ACTUALIZAR:

el literal 123 se puede convertir automáticamente a Short o Long en time de compilation. Pero no se convertirá en Float o Double .

 fun fooShort(x: Short) {} fun fooInt(x: Int) {} fun fooLong(x: Long) {} fun main(args: Array<String>) { fooShort(123) // OK fooInt(123) // OK fooLong(123) // OK } 

No. Esto no va a suceder. Como kotlin está fuertemente tipado, los types de significado no son coaccionados implícitamente . Necesita una conversión de tipo explícita. De la reference de Kotlin para conversiones explícitas se afirma:

Debido a las diferentes representaciones, los types más pequeños no son subtypes de los más grandes. […] Como consecuencia, los types más pequeños NO se convierten implícitamente a types más grandes. […] Podemos usar conversiones explícitas para ampliar numbers.

  • Intenciones en Kotlin
  • "No se puede convertir el object de tipo java.lang.String para escribir com.android.projectrc.Listing" al usar Firebase RecyclerAdapter
  • ¿Cómo dejar que un bloque kotlin vuelva a estar vacío?
  • Uso de Boolean? en si expresión
  • Kotlin Coroutines: ¿Necesitamos sincronizar el estado compartido?
  • ¿Cuál es la syntax para Class <? extiende class_name> en kotlin?
  • Cómo llamar al constructor String de Java (char , int offset, int length) de Kotlin?
  • ¿Insertar o agregar un elemento en ArrayList en Kotlin?
  • ¿Cómo puedo ejecutar una sola testing de Android usando Kotlin?
  • Filtrar una subcadena en kotlin
  • ¿Dónde / Cómo se agrega documentation para los packages de Kotlin?