Java: padrão de delegação e métodos protegidos
Eu tenho usado o padrão de delegação para envolver um objeto criado por uma fábrica em uma biblioteca de terceiros. Recentemente, a biblioteca adicionou um método protegido na classe base e minha classe wrapper não funciona mais. Alguém tem uma boa solução sem recorrer à reflexão?
Isso está na biblioteca de terceiros e no pacote,
public class Base {
public void foo();
protected void bar(); // Newly added
}
Isso está no meu próprio pacote,
public class MyWrapper extends Base {
private Base delegate;
public MyWrapper(Base delegate) {
this.delegate = delegate;
}
public void foo() {
delegate.foo()
}
protected void bar() {
// Don't know what to do
}
}
EDIT: meu post original não foi claro. Essas duas classes estão em pacotes diferentes.
Para responder a pergunta porque preciso de delegação. Este é um caso de uso típico do padrão Delegation / Wrapper e não posso mostrá-lo aqui em algumas linhas de código. A biblioteca expõe a classe Base, mas o objeto real de sua fábrica é uma classe derivada de Base. A classe real muda dependendo da configuração. Então eu não sei o que é delegado. Portanto, o padrão de herança direta não funciona aqui.