我有两个不同的接口,它们使用相同的方法但不实现或相互扩展。这两个接口分别由另一个实现接口方法
的类扩展然后我有一个类,它位于一个单独的包中,调用接口方法。
因此该类具有调用接口方法的方法,这些方法都是相同的。
public void doThis(){
connection.doThis();
}
public void doThat(){
connection.doThat();
}
public void doAnother(){
connection.doAnother();
}
现在,我想让变量连接对interface1和interface2都有效。
我的想法是将连接设置为类变量
Object connection
然后根据条件将其类型更改为interface1或interface2:
if(this){
//condition which converts connection to type interface1
}
else{
//condition which converts connection to type interface2
}
我该怎么做我可以这样做吗?
我已经获得了一个无法更改但尚未实现远程的接口。但我的项目使用RMI。所以我在一个单独的包中创建了第二个接口,它实现了Remote。因此,2个不同界面的原因是同样的事情。
答案 0 :(得分:0)
我认为将包含方法'connection'的类设置为public会更容易,因为它可以从所有包中访问。
答案 1 :(得分:0)
这似乎是一个非常奇怪的设置,但我不会质疑你。
如果您知道方法调用站点的条件(例如,条件是传递给方法的常量标志),则可以使用泛型来参数化该方法。例如:
public class TestGenerics {
public static interface A {
public void a();
}
public static interface B {
public void a();
}
public static class C implements A, B {
public void a() {
System.out.println("a");
}
}
public static <T> T getCAsT() {
return (T) new C();
}
public static void main(String[] args) {
A a = TestGenerics.<A>getCAsT();
B b = TestGenerics.<B>getCAsT();
a.a();
b.a();
}
}
否则,我会尝试以某种方式合并这两个接口。