我有一个接口(interface),有人答应我提供它的实现。
我现在必须设计一个类 s.t 我可以扩展“某人的”实现。但是我不知道该实现的名称。
例如。
interface X{ void methodA(int); int methodB();}
class A implements X { /*impl code here*/}
现在,我不知道哪个类将实现 X。但我想将这些实现合并到我的代码中
class B extends <Anyclass that implements interface X>
{/*other impl here*/}
我该怎么做呢?我知道在泛型中你可以在使用 Comparator 时指定。我想知道这个案例有没有什么可用的?
最佳答案
所以您想要一个 X 的实例,它具有与您在运行时获得的类相同的接口(interface),但允许您指定 X 的某些方法的行为方式?
如果你在运行时有一个 A
的实例,你可以使用 proxy classes创建一个实现该类实现的所有接口(interface)的对象,包括 X
,并重写 X
的一些方法来执行您想要的操作,并将其余部分委托(delegate)给实例。
代理类在效率方面不是很好,它们提供的那种动态通常更容易通过更正常的方式实现,所以不要过度使用它们,但你需要在两个部分之间的边界处使用一些灵活的胶水一个系统,他们真的可以提供帮助。
另请注意,生成的对象不是 A,它只是实现了与 A 相同的接口(interface)。
关于java - 在java中如何扩展接口(interface)的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6158809/