Я бы хотел переопределить метод, который использует один из моих сторонних библиотечных классов.
public abstract class IndirectClient<C extends Credentials, U extends CommonProfile> extends BaseClient<C, U> {
private LogoutActionBuilder<U> logoutActionBuilder = new NoLogoutActionBuilder<>();
@Override
public final RedirectAction getLogoutAction(final WebContext context, final U currentProfile, final String targetUrl) {
init(context);
return logoutActionBuilder.getLogoutAction(context, currentProfile, targetUrl);
}
}
В моем случае класс OidcLogoutActionBuilder
, реализующий интерфейс LogoutActionBuilder
, называется:
public class OidcLogoutActionBuilder<U extends OidcProfile> extends InitializableWebObject implements LogoutActionBuilder<U> {
...
//I'd like to override this method
@Override
public RedirectAction getLogoutAction(final WebContext context, final U currentProfile, final String targetUrl) {
init(context);
}
}
Я попытался расширить класс OidcLogoutActionBuilder
и переопределить нужный метод:
public class OidcLogoutActionBuilderCustom extends OidcLogoutActionBuilder<OidcProfile> {
...
//Method overriden
@Override
public RedirectAction getLogoutAction(final WebContext context, final OidcProfile currentProfile, final String targetUrl) {
init2(context);
}
}
Это не сработало, getLogoutAction()
все еще вызывает OidcLogoutActionBuilder
, а не OidcLogoutActionBuilderCustom
во время выполнения. Как мне это сделать?