Kotlin 与java互相调用 之 java调用Kotlin的函数

kt

class KTHero {
    val translator = { utterance: String ->
        println(utterance)
    }
    val translator2 = { utterance: String ,test: Int->
        println(utterance)
        println(test)
    }
}

java

import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.functions.Function2;

public class JavaMan {
    public static void main(String[] args) {
        KTHero hero = new KTHero();
        Function1<String, Unit> translator = hero.getTranslator();
        translator.invoke("Hello, world!");
        Function2<String, Integer, Unit> translator2 = hero.getTranslator2();
        translator2.invoke("Hello, world!", 2);
    }
}

kt给java预留了很多类

 长到22个参数这样

Function22
/** A function that takes 22 arguments. */
public interface Function22<in P1, in P2, in P3, in P4, in P5, in P6, in P7, in P8, in P9, in P10, in P11, in P12, in P13, in P14, in P15, in P16, in P17, in P18, in P19, in P20, in P21, in P22, out R> : Function<R> {
    /** Invokes the function with the specified arguments. */
    public operator fun invoke(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6, p7: P7, p8: P8, p9: P9, p10: P10, p11: P11, p12: P12, p13: P13, p14: P14, p15: P15, p16: P16, p17: P17, p18: P18, p19: P19, p20: P20, p21: P21, p22: P22): R
}

猜你喜欢

转载自blog.csdn.net/mp624183768/article/details/124184700