如何以相同的方式使用多个对象?

时间:2012-10-28 07:19:34

标签: java polymorphism

我正在寻找帮助,在java中访问多个不同类型的系统,就像它们是相同的一样。

例如,我有类

private class SystemA{

    public void in(boolean input){
      //do x;
    }
    public boolean out(){
      //return x;
    }
}

假设我想要一个不同系统的ArrayList。这些系统都像SystemA一样实现了进出功能,但它们将是不同的对象,所有对象都具有不同的内部体系结构。

我想例如迭代一个前面提到的arraylist,在所有对象上调用out() - 我该怎么做:

存储多种不同的对象类型。 确保我可以调用arraylist中对象的in和out函数,而不必担心对象是一种特定类型。

2 个答案:

答案 0 :(得分:2)

让您的系统类实现一个新的MySystem接口:

public interface MySystem {
    void in(boolean input);
    boolean out();
}

E.g:

private class SystemA implements MySystem {
    @Override
    public void in(boolean input) { ... }
    @Override
    public boolean out() { ... }
}

您的ArrayList将会像以下任何一样:

List<MySystem> list = new ArrayList<MySystem>();
List<? extends MySystem> list = someFactoryMethod();

我建议您阅读Java tutorial "What Is an Interface?"了解更多详情。另外,请仔细阅读"subtype polymorphism"

答案 1 :(得分:0)

这是一个广泛的问题。你需要的是多态性。在这里阅读Java多态:http://home.cogeco.ca/~ve3ll/jatutor5.htm