java.util.LinkedList <classname>无法转换为ClassName

时间:2016-11-28 20:39:42

标签: java linked-list return

我正在学习java的路上,所以请耐心等待我,即使它对你很简单。

我正在使用两个LinkedLists:

private LinkedList<BloodDonor> x;
private LinkedList<BloodDonor> y;

public List()
{
    x = new LinkedList<>();
    y = new LinkedList<>();
}

我有一个名为heroDonors的方法,可以搜索LinkedList x以查看是否有人献血超过50次。如果是这样,该捐赠者将被添加到LinkedList y并从LinkList x中删除。如果没有捐赠超过50次的捐赠者,则返回y的空链接列表。

我需要方法返回LinkedList y,但我收到错误java.util.LinkedList<BloodDonor> cannot be converted to BloodDonor

public BloodDonor heroDonors()
{
    int donations = 50;
    for (BloodDonor donor : x) {
        int number = donor.getNumberOfDonations();
        if (donations < number) {
            y.add(donor);
            x.remove(donor);
        }
        if (donations > number) {

        }
    }
    return y;
}

有人能解释我收到此错误的原因吗?

2 个答案:

答案 0 :(得分:2)

如果您想要返回BloodDonor的列表,您必须实际制作该类型的方法:

public LinkedList<BloodDonor> heroDonors() {
    LinkedList<BloodDonor> result = new LinkedList<>();
    ...
    return result;
}

BTW:我认为在这种情况下你不应该使用字段y,而是为了避免副作用而声明一个局部变量。您也可以考虑返回基类型List<BloodDonor>,如果需要,这将更好地允许使用另一个集合(我永远不会调用应用程序类List)。

答案 1 :(得分:1)

更改

public BloodDonor heroDonors()

public List<BloodDonor> heroDonors()