科廷班
class LoginService{
fun getLoginData(loginData: String) {
request(LoginApi.create().getLoginData(loginData))}
}
fun changePassword(_:String){
request(LoginApi.create().changePassword(_)
}
class RequestData {
var retrofitCall: ((String) -> Unit)? = null
}
}
Java类
class LoginModel{
private void loginData(){
RequestData data = new RequestData();
requestData.setRetrofitCall(username ->LoginService::getLoginData)
}
private void changePassword(){
RequestData data = new RequestData();
requestData.setRetrofitCall(username ->LoginService::changePassword)
}
}
请求数据.setRetrofitCall(用户名-〉登录服务::更改密码)
为什么是高阶函数:
由于我必须区分每个API调用调用的功能,因此尝试使用。
如何调用上面高亮显示的代码?
3条答案
按热度按时间hjqgdpho1#
在Java中使用Kotlin函数接口有点棘手,也不是很干净。
您的
setRetrofitCall()
需要如下所示:qeeaahzv2#
带有Lamda表达式的更短代码
jucafojl3#
如果你想使用一个命名的类而不想引用Kotlin的接口,你可以使用
::
。否则对于匿名类,你可以使用lambda表达式来表示每个查克拉帕尼的答案。