Eu tenho duas interfaces em Java (versão 8) que são muito semelhantes. Não posso alterar as interfaces e não posso alterar as classes que as implementam.
public interface A {
int get();
}
public interface B {
int get();
int somethingelse();
}
Agora eu tenho uma função que sua implementação se encaixa nas duas interfaces (quase). Eu quero fazer algo assim:
public int foo((A | B) p) {
int ret = 0;
if (p instanceof B) {
ret = p.somthingelse();
}
return ret + p.get();
}
Não quero usar a inspeção porque esta função está no pipeline principal do meu programa. Eu quero que ele tenha um bom desempenho. É possível fazer isso em Java?
Editar:
Uma solução simples será copiar / colar foo()
e implementá-lo de maneira diferente para cada interface. Mas, na realidade, foo()
as interfaces são muito mais longas que isso e estou tentando evitar a duplicação de código.
get()
em comum. Este é obviamente um exemplo simplificado. Na realidade, eles têm mais funções em comum.
public
acessador é redundante para métodos de interface. E você quis dizer em instanceof
vez de implements
?