【发布时间】:2014-02-14 11:45:28
【问题描述】:
我有两个不同的接口,它们使用相同的方法,但不实现或扩展彼此。这两个接口都由另一个实现接口方法的类扩展
然后我有一个类,它位于一个单独的包中,它调用接口方法。
所以类有方法调用接口的方法,都是一样的。
public void doThis(){
connection.doThis();
}
public void doThat(){
connection.doThat();
}
public void doAnother(){
connection.doAnother();
}
现在,我想让变量 connection 对 interface1 和 interface2 都有效。
我的想法是将连接设置为类变量
Object connection
然后根据条件将其类型更改为 interface1 或 interface2:
if(this){
//condition which converts connection to type interface1
}
else{
//condition which converts connection to type interface2
}
我该怎么做。我可以这样做吗?
我得到了一个无法更改的接口,但没有实现远程。但我的项目使用 RMI。所以我在一个单独的包中创建了第二个接口来实现远程。因此,两个不同的接口做同样的事情的原因。
【问题讨论】:
-
为什么不使用泛型?
-
如果两个接口有完全相同的方法,那么你不需要做任何事情,保持引用类型为
Interface1或Inteface2。 -
为什么有两个相同的接口,每个接口都有一个实现类?很可能您只想要一个具有两个实现的接口,在这种情况下,您可以让您的成员变量属于那个接口的类型。
-
一个接口扩展远程,另一个接口。这不能改变
-
您是否尝试过为这两个类提供一个通用接口?即使你不能修改一个类X,也许你可以扩展X,让新类也实现另一个类的接口。
标签: java