【问题标题】:Returning the same type As Supplied as an Argument - Java8 Generics返回与提供的参数相同的类型 - Java8 泛型
【发布时间】:2017-12-05 06:26:48
【问题描述】:

我应该编写一个名为 getLowCost 的通用方法,它接受两个参数:一个数组列表 arLst1,它可以是 Battery、Single Use 或 Rechargeable 类型,并且是双倍成本。我应该返回 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);
        }
    }
}

很遗憾,我无法将该对象添加到我的列表 2。如何保证返回类型与第一个参数的类型相同?

【问题讨论】:

标签: java generics types


【解决方案1】:

使用类型变量:

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

【讨论】:

    猜你喜欢
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2019-12-23
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多