Articles of kotlin reflect

Combinar / fusionar classs de datos en Kotlin

¿Hay alguna forma de fusionar las classs de datos de kotlin sin especificar todas las properties? data class MyDataClass(val prop1: String, val prop2: Int, …//many props) con una function con la siguiente firma: fun merge(left: MyDataClass, right: MyDataClass): MyDataClass donde esta function verifica cada propiedad en ambas classs y donde son diferentes utiliza el parámetro […]

Clase de datos KotlinReflectionInternalError

Recibí el siguiente error al intentar utilizar una class de datos como un tipo de resultado en un service de modificación. 11-15 11:35:38.345 14693-14693/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.app, PID: 14693 kotlin.reflect.jvm.internal.KotlinReflectionInternalError: Incorrect resolution sequence for Java constructor public constructor AuthenticationResponse() defined in com.example.app.data.auth.AuthenticationResponse[JavaClassConstructorDescriptor@6d57dc3] (kotlin.reflect.jvm.internal.impl.load.java.structure.reflect.ReflectJavaClass: class com.example.app.data.auth.AuthenticationResponse) at kotlin.reflect.jvm.internal.RuntimeTypeMapper.mapSignature(RuntimeTypeMapper.kt:202) at kotlin.reflect.jvm.internal.KFunctionImpl.<init>(KFunctionImpl.kt:46) at kotlin.reflect.jvm.internal.KClassImpl$Data$constructors$2.invoke(KClassImpl.kt:87) at […]

Compruebe si la class es un valor válido para KParameter

Dado el siguiente código de ejemplo fun function(text: CharSequence) { println(text) } val textParam = ::function.parameters[0] val stringClass = String::class ¿Cómo puedo verificar si textParam acepta stringClass como parámetro?

Verificar si la function es extensión

Dada una function KFunction ¿cómo puedo verificar si se trata de una function de extensión? La única forma que conozco es verificar si function.extensionReceiverParameter devuelve null . ¿Hay alguna otra o una forma recomendada?

Kotlin comtesting si la function requiere parámetro de instancia

Si se crea un KCallable utilizando Any()::toString , cuando se haga reference a él más adelante no es necesario pasar esa instancia Any (cuando se usa la call ). Aunque si se crea utilizando Any::toString (no es una instancia de Any ), se requiere pasar una instancia Any . Entonces mi pregunta es ¿cómo puedo […]

Referencia de método al organizador de properties

¿Cómo podría get una reference de método para establecer la propiedad sin usar kotlin-reflect? Básicamente, si escribo mi código en Java, es súper simple fun setValue(i: Int) = Unit val a: (Int) -> Unit = this::setValue Pero para el var value: Int estoy obteniendo var value = 1 val a: KMutableProperty0<Int> = this::value

Reflexión de Kotlin: parámetro de tipo desconocido

Estoy ejecutando algunos experimentos en el reflection de Kotlin. Estoy tratando de get un object de reflexión de una class genérica con su argumento. En Java, eso sería un ParameterizedType . La manera de get tal cosa utilizando la API de reflexión de Java es un poco complicada: crear una subclass anónima de una class […]

Cómo get un package de kotlin por reflexión

La biblioteca de reflexión Kotlin define KDeclarationContainer , que Represents an entity which may contain declarations of any other entities, such as a class or a package. this::class devuelve KClass , que extiende KDeclarationContainer , pero ¿cómo obtengo el KDeclarationContainer primario (un KPackage ?)

¿Cómo get un KType en Kotlin?

Estoy experimentando con la funcionalidad de reflexión en Kotlin, pero parece que no puedo entender cómo get un valor KType. Supongamos que tengo una class que mapea frases en fábricas de objects. En caso de ambigüedad, el usuario puede suministrar un parámetro de type que limite la búsqueda a solo las fábricas que devuelven ese […]

¿Cómo puedo convertir una KFunction sin param de instancia en una KFunction con ella?

class X { fun someFunc(x: Int, y: String, z: Double) { println("x = [$x], y = [$y], z = [$z]") } } fun main(args: Array<String>) { val func = X::someFunc val instance = X() func.call(instance, 1, "Hi", 123.45) } Dado el código anterior, ¿cómo puedo convertirlo en una function con instancia incorporada para que cuando […]