Articles of casting

¿Cuál es la diferencia entre el operador "como" y "es" en Kotlin?

En Java, puedo escribir código como: void cast(A a) { if(a instanceof Person) { Person p = (Person) a; } } En Kotlin, ¿qué debería hacer? ¿Usar as operador o is operador?

¿Hay una mejor manera de filter nulo en una list?

Lo hago para filtrar la list de valor nulo: val myList: List<Any?> = […] myList.filter { it != null }.map { it!! } myList.get(0).xxx // don't need to write "?." Si no agrego el map , la list no se convierte en List<…> . ¿Hay una manera más elegante de hacer eso?

¿Por qué todavía es necesario lanzar el tipo aunque ya se haya asegurado en este ejemplo?

Hoy encontré esta sección en Kotlin Docs . Llamados "moldes inteligentes", Kotlin parece "insert yesos (seguros) automáticamente cuando sea necesario": En muchos casos, no es necesario utilizar operadores de conversión explícitos en Kotlin, porque el comstackdor realiza un seguimiento de is-checks para valores inmutables e inserta moldes (seguros) automáticamente cuando es necesario: fun demo(x: Any) […]

¿Por qué este tipo necesita un lanzamiento explícito?

He creado una function de extensión para JavaFX TableColumn que lo hace más conciso para implementar una cellFactory sin la repetitiva repetición. La function de extensión se define así: inline fun <S, T> TableColumn<S, T>.cellFormat(crossinline formatter: (TableCell<S, T>.(T) -> Unit)) { cellFactory = Callback { column: TableColumn<S, T> -> object : TableCell<S, T>() { override […]

Variable de lanzamiento inteligente en la solución de lambda kotlin

He pasado un lambda hoy que tiene una variable que es de tipo desconocido, y dentro de la condición when..is, la variable no puede emitir inteligentemente al tipo en la condición is … da que es imposible ya que el variable es una API pública, ¿hay alguna solución a esto?

¿Es posible eliminar el molde sin marcar en Kotlin cuando se usa arrayOfNulls?

Mientras desarrollé una queue primaria simple en Kotlin, he tropezado con un elenco sin marcar con una advertencia sin marcar de la que no me puedo deshacer: private val pq: Array<T> = arrayOfNulls<Comparable<T>>(capacity) as Array<T> Aquí está el código fuente completo de la queue de prioridad de Kotlin: class UnordenetworkingMaxPQ<T : Comparable<T>>(capacity: Int) { private […]

Kotlin Cast String como String.Companion

Así que soy nuevo en el aprendizaje de Kotlin, proveniente de un entorno C #. He estado jugando con types y algunas otras cosas. Intento crear una class estática de "WalMartGreeters" que pueda agregar "greeters" a una list y luego llamar a una function estática simple para mostrarlos. Mi método toma un argumento de cadena […]

Elenco dynamic en Kotlin

Quiero convertir Any to Int utilizando KClass<Int> , teniendo una KClass<Int> y una Any que en realidad es Int . fun <T> cast(any: Any, clazz: KClass<*>): T = clazz.java.cast(any) cast(0, Int::class) Sin embargo, obtuve este error. java.lang.ClassCastException: No se puede convertir java.lang.Integer en int ¿Conoces alguna solución excepto any as Int ?

Kotlin: "val someVar = if (xx) 1 else 1.0", ¿por qué someVar es "Any"?

Primero, lo intenté: interface Super class A : Super class B : Super val a = if (System.currentTimeMillis() >= 100) A() else B() Presioné Ctrl Q para verificar el tipo de a . Es Super , como se esperaba. Pero cuando lo intenté: val someVar = if (System.currentTimeMillis() > 0) 1 else 1.0 Dice que […]

¿Por qué Kotlin no realiza el moldeado automático de text?

var a : Double a = Math.sin(10) // error: the integer literal does not conform to the expected type Double a = Math.sin(10.0) //This compiles successfully println(a) ¿Por qué no kotlin realiza una conversión de tipo implícita y nos obliga a pasar el tipo exacto de datos? fun sin(value: Double): Double // at kotlin documentation