我应该编写一个名为getLowCost的泛型方法,它接受两个参数:数组列表arLst1,它类型为Battery,Single Use或Rechargeable,以及double cost。我应该返回arLst1中所有电池的数组列表,其成本低于或等于所提供的成本。
我以为我会这样开始,
public ArrayList<? extends Battery> getLowCost(ArrayList<? extends Battery> list, double val) {
ArrayList<? extends Battery> list2 = new ArrayList<>();
for (Battery obj: list) {
if (obj.getLifeTimeCost() < val) {
list2.add(obj);
}
}
}
不幸的是,我无法将该对象添加到我的list2中。如何保证返回类型与第一个参数的类型相同?
答案 0 :(得分:3)
使用类型变量:
public <T extends Battery> ArrayList<T> getLowCost(ArrayList<T> list, double val) {
ArrayList<T> list2 = new ArrayList<>();
for (T obj: list) {
if (obj.getLifeTimeCost() < val) {
list2.add(obj);
}
}
return list2;
}