簡體   English   中英

實現接口以調用相同方法的類數組

[英]Array of classes implementing an interface to call same method

我有4個類,都實現一個接口IntSorter 所有類都有一個sort方法,因此對於每個類,我想在數組上調用sort

我認為這樣會起作用:

IntSorter[] classes = new IntSorter[] {
Class1.class, Class2.class, Class3.class, Class4.class
};
for (Class c : classes)
    c.sort(array.clone());

但是classes無法保存.class名稱,我收到錯誤Type mismatch: cannot convert from Class<Class1> to IntSorter

所以我嘗試了

Class[] classes = new Class[] {
Class1.class, Class2.class, Class3.class, Class4.class
};
for (Class c : classes)
    c.sort(array.clone());

但是現在無法調用c.sort()。 我嘗試首先使用(IntSorter) c將類解析為IntSorter,但是隨后出現錯誤Cannot cast from Class to IntSorter

我該如何解決?

使用第一種方法,但是要for (IntSorter c : classes) -並且需要將實例放入數組(而不是類)中。 就像是,

IntSorter[] classes = new IntSorter[] {
    new Class1(), new Class2(), new Class3(), new Class4()
};
for (IntSorter c : classes) {
    c.sort(array.clone());
}

您正在嘗試創建類數組而不是實現IntSorter的類實例數組。

檢查此問題以了解類,對象和實例之間的區別 :類,對象和實例之間的區別

就我所提供的有限信息而言,您的代碼應該看起來像這樣:

IntSorter[] classes = new IntSorter[] {
new Class1(), new Class2(), new Class3(), new Class4()
};
for (IntSorter c : classes)
    c.sort(array.clone());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM