Kotlin peut-il convertir les méthodes de réflexion Java en fonctions d'ordre supérieur ? Comment faire si possible ?
扔个三星炸死你
扔个三星炸死你 2017-06-23 09:13:40
0
1
828

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("呵呵呵");
        }
    }
}
扔个三星炸死你
扔个三星炸死你

répondre à tous(1)
仅有的幸福

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...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal