Yur*_*off 3 java lambda android retrolambda
我正在尝试使用retrolambda在 Android 上使用 lambda 表达式。在下面的代码中,我需要添加作为接口的侦听器:
public interface LoginUserInterface {
void onLoginSuccess(LoginResponseEntity login);
void onLoginFail(ServerResponse sr);
}
Run Code Online (Sandbox Code Playgroud)
代码
private void makeLoginRequest(LoginRequestEntity loginRequestEntity) {
new LoginUserService(loginRequestEntity)
.setListener(
login -> loginSuccess(login),
sr -> loginFail(sr))
.execute();
}
private void loginSuccess(LoginResponseEntity login) {
//TODO loginSuccess
}
private void loginFail(ServerResponse sr) {
//TODO loginFail
}
Run Code Online (Sandbox Code Playgroud)
但是 Android Studio 将红色loginSuccess( login )和loginFail( sr )标记为错误并显示消息“无法应用 LoginResponseEntity ”和“无法应用 ServerResponse ”
所以我无法将 lambda 参数“ login ”设置为方法loginSuccess(登录)。
请帮助我理解这个表达有什么问题。
您只能将 lambda 与Functional interfaces 一起使用。这意味着您的接口必须只指定一种方法。
要记住它(简单地说 - 能够使用 lambdas 而不是匿名类),最好的方法是@FunctionalInterface在您的接口上添加注释。
@FunctionalInterface
public interface LoginUserInterface {
LoginResult login(...)
}
Run Code Online (Sandbox Code Playgroud)
然后发送值 LoginResult
| 归档时间: |
|
| 查看次数: |
11956 次 |
| 最近记录: |