LeoColman
03/04/2019, 6:34 PMClass.forName("myClass").declaredMethods.map { it.kotlinFunction!! }.filter { fn -> fn.parameters.any { it is KFunction<*> } }
but it didn't workfred.deschenes
03/04/2019, 6:52 PMLeoColman
03/04/2019, 6:56 PMfun foo<A>(fn: (A) -> Unit) {}
fun foo<A. B>(fn: (A, B) -> Unit) {}
fun foo <A, B, C>(fn: (A, B, C) -> Unit) {}
...
fn
Foo::class.filter { function -> function.parameters.any { /* it is of function type */ }
fred.deschenes
03/04/2019, 7:01 PMfun main(args: Array<String>) {
val funcs = Foo::class.declaredFunctions.filter { func ->
func.parameters.any { param ->
param.type.isSubtypeOf(Function::class.starProjectedType)
}
}
println(funcs)
}
class Foo {
fun <A> foo(fn: (A) -> Unit) {}
fun <A, B> foo2(fn: (A, B) -> Unit) {}
fun <A, B, C> foo3(fn: (A, B, C) -> Unit) {}
fun notThisOne() { }
}
Function
is kotlin`s Function
in the kotlin package, not java.lang.Function btwLeoColman
03/04/2019, 7:04 PMfred.deschenes
03/04/2019, 7:04 PMLeoColman
03/04/2019, 7:04 PMfred.deschenes
03/04/2019, 7:05 PM