返回相同的类型作为参数提供 - Java8 Generics

时间:2017-12-04 22:19:47

标签: java generics types

我应该编写一个名为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中。如何保证返回类型与第一个参数的类型相同?

1 个答案:

答案 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;
}