更改类变量类型

时间:2014-02-14 02:09:46

标签: java

我有两个不同的接口,它们使用相同的方法但不实现或相互扩展。这两个接口分别由另一个实现接口方法

的类扩展

然后我有一个类,它位于一个单独的包中,调用接口方法。

因此该类具有调用接口方法的方法,这些方法都是相同的。

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个不同界面的原因是同样的事情。

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();
    }
}

否则,我会尝试以某种方式合并这两个接口。