ave*_*raj 7 java android kotlin
我有一个像下面的kotlin方法
fun initDrawer(drawerView: DrawerView, drawerLayout: DrawerLayout, context: Context, onRefreshClick: () -> Unit) {
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试传递initDrawer(drawerView,drawerlayout,this,onRefreshClick())时,它给了我一个错误的required()无法应用于(kotlin.Unit)
是否可以将方法从java传递给kotlin.
Dmi*_*try 14
您必须将onRefreshClick的返回值设置为Unit:
private Unit onRefreshClick() {
//do something here
return Unit.INSTANCE;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样调用它:
initDrawer(drawerView, drawerLayout, this, this::onRefreshClick);
Run Code Online (Sandbox Code Playgroud)
您不能直接从 Java 传递您的 Java 方法,因为 Kotlin 参数期望该方法返回Unit。
您可以遵循以下模式:
kotlinClass.higherOrderFunction(() -> {functionToPass(); return Unit.INSTANCE;});
Run Code Online (Sandbox Code Playgroud)
其中functionToPass()定义为:
private void functionToPass() {
// do something
}
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
initDrawer(drawerView, drawerlayout, this,
() -> {onRefreshClick(); return Unit.INSTANCE;})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2262 次 |
| 最近记录: |