Я пытаюсь вернуть указанный тип при использовании сторонней функции, которая использует обратный вызов.У меня есть интерфейс
public interface AuthenticationService {
AuthResult signInEmailPassword(String username, String password, AuthListener listener);
}
При реализации интерфейса я вызываю асинхронную функцию AWS Cognito, которая использует обратный вызов.
public class AwsCognitoAuthenticator implements AuthenticationService {
@Override
public AuthResult signUp(String givenName, String username, String password, final AuthListener listener) {
userPool.signUpInBackground(username, password, userAttributes, null, signupCallback);
--> return result from signupCallback;
}
}
Как я могу по-прежнему возвращать тип AuthResult при вызове этого метода (signUpInBackground)?(Я не хочу менять его на void, чтобы я мог использовать кинжал на интерфейсе).
Редактировать
Я пробовал много разных способов в кинжале, нобыли неудачны с моими попытками.Я пытаюсь внедрить приведенный ниже интерфейс в действие в виде поля.
@Component(modules = LoginModule.class)
public interface AuthenticationService {
void signUp(String givenName, String username, String password, AuthListener listener);
void signInEmailPassword(String username, String password, AuthListener listener);
void changePassword(String oldPassword, String newPassword);
void resetPassword();
void signOut();
}
Модуль
@Module
public class LoginModule {
@Provides
AuthenticationService provideAuthService() {
return new AwsCognitoAuthenticator();
}
}
Затем я получаю ошибки для трех объявлений, которые имеют параметры в интерфейсе, говорящие
ошибка: этот метод не является допустимым методом предоставления, методом внедрения членов или методом фабрики подкомпонентов.Кинжал не может реализовать этот метод