我试图更好地理解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()'?这个接口没有这样的方法。 –
编译并运行代码并描述它的错误。 –