Tengo dos interfaces en Java (versión 8) que son muy similares. No puedo cambiar las interfaces y no puedo cambiar las clases que las implementan.
public interface A {
int get();
}
public interface B {
int get();
int somethingelse();
}
Ahora tengo una función que su implementación se ajusta a ambas interfaces (casi). Quiero que haga algo así:
public int foo((A | B) p) {
int ret = 0;
if (p instanceof B) {
ret = p.somthingelse();
}
return ret + p.get();
}
No quiero usar la inspección porque esta función está en la tubería principal de mi programa. Quiero que tenga un buen rendimiento. ¿Es posible hacer esto en Java?
Editar:
Una solución simple será copiar / pegar foo()
e implementarlo de manera diferente para cada interfaz. Pero, en realidad, foo()
las interfaces son mucho más largas que eso y estoy tratando de evitar la duplicación de código.
get()
en común. Este es, por supuesto, un ejemplo simplificado. En realidad, tienen más funciones en común.
public
acceso es redundante para los métodos de interfaz. ¿Y quiso decir en instanceof
lugar de implements
?