为什么需要布尔返回类型?

时间:2016-09-30 05:47:43

标签: java return boolean

我有一个使用ShoppingCart个对象的课程ItemOrder

public class ShoppingCart extends ArrayList<ItemOrder> {

我有一个方法可以检查某个对象是否已经存在于数组列表中,如果是,则将index替换为new对象,如果不是则添加新对象。

public boolean add(ItemOrder order){
    if (super.indexOf(order) != -1){      //ITEM ALREADY IN LIST, REPLACE
        super.remove(super.indexOf(order));
        super.set(super.indexOf(order), order);
    }
    else                                  //ITEM NOT IN LIST, ADD
        super.add(order);
    return true;                          //TO SATISFY RETURN TYPE
}

当我编写方法时,我没有返回类型。我收到一个错误,建议我将返回类型设置为void,所以我这样做了。然后我得到另一个错误,返回类型必须是布尔值。我唯一的问题是方法本身并不是(至少对我而言)真/假的回报。我需要做的就是在ArrayList中添加/替换一个对象,而不是返回任何东西。

为什么这个方法需要一个布尔返回类型,我最后只是在return true;投掷,或者我真的应该使用它吗?

2 个答案:

答案 0 :(得分:7)

您的add方法会覆盖实施ArrayList.add的{​​{1}}

根据javadoc Collection.add

  如果通过调用

更改了集合,则

返回true

请参阅:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add(E)https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#add(E)

答案 1 :(得分:0)

想象一下,你有以下课程:

public class Example extends ArrayList<String>{

public boolean add(String order){
        if (super.indexOf(order) != -1){      //ITEM ALREADY IN LIST, REPLACE
            super.remove(super.indexOf(order));
            super.set(super.indexOf(order), order);
        }
        else                                  //ITEM NOT IN LIST, ADD
            super.add(order);
        return true;                          //TO SATISFY RETURN TYPE
    }

}

添加方法public boolean add(String order){..} 实际上是覆盖 ArrayList<String>类中包含的默认方法。

使用IDE您可以清楚地看到您还需要@Override注释,因此它将是:

    @Override
    public boolean add(String order){
        if (super.indexOf(order) != -1){      //ITEM ALREADY IN LIST, REPLACE
            super.remove(super.indexOf(order));
            super.set(super.indexOf(order), order);
        }
        else                                  //ITEM NOT IN LIST, ADD
            super.add(order);
        return true;                          //TO SATISFY RETURN TYPE
    }

您还可以查看JavaDoc(https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#add-int-E-