Creo que lo siguiente no se puede hacer en Java. Pero me encantaría aprender a implementar algo que se le parezca.implementando interfaces después del hecho
Supongamos que tenemos una clase C, que ya se utiliza en el código compilado. (No podemos cambiar ese código ni la definición original de C).
Supongamos además que hay un código interesante que podría reutilizarse, si solo C implementara la interfaz I. De hecho, es más o menos trivial derivar D que es solo C + la implementación de los métodos de interfaz.
Sin embargo, parece que no hay manera, una vez que tengo una C, para decir: Quiero que seas una D, es decir, una aplicación de C I.
(nota al pie: Creo que el molde (D) c, donde el tipo de tiempo de ejecución de c es C, debe permitirse si D es una C y la única diferencia es C. ¿Esto debería ser seguro, en caso de no hacerlo?)
¿Cómo podría funcionar esto? ¿calamidad?
(Conozco el patrón de diseño de fábrica, pero parece que no es una solución. Pues, una vez que logramos crear D's en todos los lugares donde anteriormente eran C, alguien más encuentra otra interfaz J útil y deriva E se extiende C implementa J. Pero E y D son incompatibles, ya que ambos agregan un conjunto diferente de métodos a C. Entonces, aunque siempre podemos pasar una E donde se espera una C, no podemos pasar una E donde se espera una D. Más bien, ahora, necesitaríamos una nueva clase F extiende C implementa I, J)
Esto parece bastante complejo, pero definitivamente voy a intentarlo. ¿Puede decir algo sobre el costo del tiempo de ejecución, es decir, parece que necesito una instancia de controlador de invocación adicional por objeto? – Ingo
El método delegado sería mucho más simple, esto agrega complejidad sin ningún beneficio para este problema en particular. – Robin
pensé que se necesitaba otra solución además de aplicar el patrón de adaptador específicamente una solución de tiempo de ejecución. tal vez una mala interpretación – MahdeTo