public interface Foo { public void test(); }
Esta clase implementa la interfaz anterior:
public class FooChild implements Foo { @Override public void test() {...} public void test2() {...} }
Tengo que ademas llamar al metodo test2 en alguna parte de mi codigo:
Foo f = new FooChild(); ((FooChild) f).test2(); realmente no me gusta castear una interfaz a una clase asi que añadi otra interfaz: public interface Bar extends Foo { public void test2(); } public class FooChild implements Bar { @Override public void test() {...} @Override public void test2() {...} }
Ahora puedo usar test2() con un casteo a una interfaz no una clase
Foo f = new FooChild(); ((Bar) f).test2();
Pudiese añadir test2 a la interfaz Foo pero hay demasiadas clases que implementan Foo, si añado una funcion tengo que añadir codigos a todos las clases que implemente Foo.
Pero si pudiese hacer esto de igual forma no pudiese ya que no tengo permisos para editar Foo.
Existe una manera mucho mejor de hacer esto? mejor si es sin castear