suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Kann Kotlin Java-Reflexionsmethoden in Funktionen höherer Ordnung umwandeln? Wie geht das wenn möglich?

Kann Kotlin Java-Reflexionsmethoden in Funktionen höherer Ordnung konvertieren? Wie geht das wenn möglich?
Hier ist nur ein Beispiel, die tatsächliche Ausführung führt zu einem Fehler.

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

Antworte allen(1)Ich werde antworten

  • 仅有的幸福

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

    反射不行的吧,不过对于单抽象方法的接口(SAM Type),Kotlin 在调用 java 时,有一个 SAM 转换的机制,从而可以使用 lambda ~
    比如 view.post{dosomething()},相当于把需要 Runnable 接口的 post 函数转换成了一个高阶函数。

    更多: http://www.jianshu.com/p/6386...

    Antwort
    0
  • StornierenAntwort