Maison  >  Questions et réponses  >  le corps du texte

Kotlin peut-il convertir les méthodes de réflexion Java en fonctions d'ordre supérieur ? Comment faire si possible ?

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("呵呵呵");
        }
    }
}
扔个三星炸死你扔个三星炸死你2675 Il y a quelques jours765

répondre à tous(1)je répondrai

  • 仅有的幸福

    仅有的幸福2017-06-23 09:15:40

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

    répondre
    0
  • Annulerrépondre