Kotlin peut-il convertir les méthodes de réflexion Java en fonctions d'ordre supérieur ? Comment faire si possible ?
Voici juste un exemple, l'exécution réelle entraînera une erreur.
class A {
fun haveFun(s:String){
print(s);
}
}
fun main(args: Array<String>) {
val forName = Class.forName("com.gwsoft.tests.A")
forName?.let {
val method = forName.getMethod("haveFun", String::class.java)
method?.let {
val fu=method as ((s:String)-> Unit)//这里并不行 会报java.lang.reflect.Method cannot be cast to kotlin.jvm.functions.Function1
fu("呵呵呵");
}
}
}
La réflexion n'est pas possible, mais pour une seule interface de méthode abstraite (type SAM), Kotlin dispose d'un mécanisme de conversion SAM lors de l'appel de Java, vous pouvez donc utiliser lambda~
Par exemple, view.post{dosomething()}, ce qui est équivalent à La fonction post qui nécessite l'interface Runnable est convertie en une fonction d'ordre supérieur.
Plus : http://www.jianshu.com/p/6386...