¿Puedo get una KFunction de una variable del tipo de function en Kotlin?

Estoy tratando de get el nombre con el que se definió una function

fun aFunction() = Unit fun functionName(function: () -> Unit) : String { val functionAsKFunction: KFunction<Unit> = someMiracle(function) return functionAsKFunction.name } assertEquals("aFunction", functionName(::aFunction)) 

Simplemente puede convertir () -> Unit en KFunction<*> . Teóricamente, este es un detalle de implementación, pero no creo que se rompa nunca.

 fun functionName(function: () -> Unit) : String { val functionAsKFunction: KFunction<*> = function as KFunction<*> return functionAsKFunction.name } 

Editar : Obviamente, esto no funcionará para lambdas (¿qué nombre esperarías de todos modos?) Para evitar lockings, puedes usar un cast seguro como ese:

 fun functionName(function: () -> Unit) : String? { val functionAsKFunction: KFunction<*> = function as? KFunction<*> ?: return null return functionAsKFunction.name } 
  • ¿Cómo puedo establecer una propiedad de un object complementario en Kotlin a través de la reflexión?
  • ¿Cómo get un KType en Kotlin?
  • por qué SomeClass :: class es KClass <SomeClass> pero esta :: class es KClass <out SomeClass>
  • Implementando una interfaz de kotlin en java
  • Los literales de class Kotlin con el lado izquierdo vacío aún no son compatibles.
  • Kotlin: ¿Es aquí una forma inteligente de lanzar NotImplementedError para todos los methods de una class?
  • Reflexión de KFlin KFunction - get valores de parameters
  • ¿Hay alguna manera de identificar una class de datos Kotlin de una class regular de Kotlin?
  • Usar reflexión para pasar y modificar una primitiva sin usar matriz
  • Kotlin obtiene la anotación de campo siempre vacía
  • Determinar si una instancia es una instancia de una class de datos