2012-10-28 24 views
0

我正在尋找與在java中訪問多個不同類型的系統的幫助,就好像它們是相同的。如何以同樣的方式使用多個對象?

例如,我有類

private class SystemA{ 

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

說我想有不同的系統的ArrayList。這些系統都像SystemA一樣實現了內外功能,但它們將是不同的對象,並且都具有不同的內部體系結構。

我想例如通過前述方式的ArrayList迭代,上的所有對象的呼喚() - 我怎能:

存儲多個不同的對象類型。 確保我可以調用arraylist中對象的輸入和輸出函數,而不必擔心該對象是特定類型還是另一個類型。

回答

2

讓你的系統類實現一個新的MySystem接口:

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

如:

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

我建議readi請查閱Java tutorial "What Is an Interface?"瞭解更多詳情。另外,請閱讀"subtype polymorphism"

相關問題