我試圖更好地理解Java接口,並對一些非常基本的代碼有以下問題。在Java中使用增強for循環與接口?
下面創建兩個實現相同接口的類。然後我創建兩個ArrayLists來保存這兩個類的對象。然後我想要創建一個單一的enhanced-for循環,它遍歷每個列表並執行最初在界面中定義的方法。
我以爲我可以使用一個循環,而不是接受一個特定的類類型,因爲它的參數可以使用接口類型來代替,這將允許我使用任何實現該接口的類,但似乎我有犯了錯誤。
我該如何去創建一個for循環,它只允許實現一個接口操作的類?
interface Valueing{
double getValue();
}
class Coin implements Valueing
{
private double coinVal = 0.0;
Coin(double initVal){
coinVal = initVal;
}
public double getValue(){
return this.coinVal;
}
}
class Note implements Valueing
{
private int noteVal = 0;
Note(int initVal){
noteVal = initVal;
}
public double getValue(){
return (double)noteVal;
}
}
public class IFaceBasics{
public static void main(String[] args){
ArrayList<Coin> myChange = new ArrayList<Coin>();
myChange.add(new Coin(0.01));
double totalChange = sumValues(myChange);
ArrayList<Note> myNotes = new ArrayList<Note>();
myNotes.add(new Note(5));
double totalNotes = sumValues(myNotes);
}
public double sumValues(ArrayList<Valueing> a){
double totalSum = 0;
for(Valueing avg : a)
{
totalSum += avg.getAverage();
}
return totalSum;
}
}
感謝您的任何反饋。
使用可以使用泛型http://stackoverflow.com/questions/16707340/when-to-use-wildcards-in-java-generics –
你爲什麼要嘗試在'Valueing'上調用'getAverage()'?這個接口沒有這樣的方法。 –
編譯並運行代碼並描述它的錯誤。 –