当前位置:   article > 正文

Kotlin安卓称王?Java如何调用Kotlin的高级特性?_android kt context class_android java 调用kotlin

android java 调用kotlin

this.addFlags(flag)
}
if (this !is Activity) {
this.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
if (bundle != null) {
putExtras(bundle.toBundle()!!)
}
}
startActivity(intent)
}

我们可用的一些扩展函数和一些不可用的扩展函数:

可以看到 ActivityExt 类中的部分扩展函数不能使用。一些内联函数+标注泛型的扩展方法确是无法使用。(还我用的不对吗?不知道有没有大佬指点!)

四、Java调用KT高阶函数

高阶函数就是可以当参数方法函数,例如最简单的高阶函数对象 () -> Unit 这种函数在转成 Java 的过程会生成对应的 Function 接口。我们直接 new Function 的匿名接口对象即可。

比如我们定义一些高级函数的方法:

class KotlinDemo {

fun String.setValueCallback(block: () -> Unit) {

block()
}

fun setValueCallback2(block: () -> Unit, action: (Int) -> Int) {

block()

val action1 = action(1)
YYLogUtils.w(“我收到处理的值了-计算的结果:$action1”)
}

}

那么我在Java中怎么调用呢?

public void demo2(View view) {

KotlinDemo demo = new KotlinDemo();

demo.setValueCallback(“str”, new Function0() {
@Override
public Unit invoke() {

ToastUtils.INSTANCE.makeText(mActivity, “我被回调了!!”);

return null;
}
});

demo.setValueCallback2(new Function0() {
@Override
public Unit invoke() {

YYLogUtils.w(“这里没有返回值,我回调到我就行了”);

return null;
}
}, new Function1<Integer, Integer>() {
@Override
public Integer invoke(Integer integer) {

YYLogUtils.w(“这里有返回值,回调到这里,我还需要处理运算,我的上级才能收到我处理的值”);

return integer + 10;
}
});

}

打印的结果:

高阶函数的Java调用可以说是后续的基础,关于 Function 的接口,从Function1 到 Function22 Kotlin给我们定义了20多个接口对象,只是用于区分有多少个参数,本质都是一样的。

不会真有人定义这么多参数吧,我最多用到三个参数

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/580868
推荐阅读
相关标签