У меня есть класс ShoppingCart
, который использует ItemOrder
объектов.Почему требуется тип Boolean return?
public class ShoppingCart extends ArrayList<ItemOrder> {
У меня есть метод, который проверяет, является ли объект уже exsists в списке массива, если так замените индекс с новым объектом, если не добавить новый объект.
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
}
Когда я написал метод, у меня не было типа возврата. Я получал ошибку, которая предполагала, что я установил тип возврата в пустоту, поэтому я сделал это. Затем я получил еще одну ошибку, возвращаемый тип должен быть логическим. Моя единственная проблема заключается в том, что сам метод по сути не является (по крайней мере для меня) истинным/ложным возвратом. Все, что мне нужно, это добавить/заменить объект в ArrayList, а не возвращать что-либо вообще.
Почему этот метод требует логического типа возврата, и я уверен, просто вбрасывая return true;
в конце, или я должен использовать его для этого?
Вы переопределение списка. add() и заставить его сделать что-то, что не соответствует контракту List.add(). Не делай этого. Не расширяйте ArrayList. Вместо этого ** используйте ** Список как поле ShoppingCart. ShoppingCart - это не список. Однако он может использовать список для хранения своих элементов. –
Не ваш вопрос, но если вы делаете 'super.remove (super.indexOf (order));' то что такое indexOf в следующем выражении 'super.set (super.indexOf (order), order);'? –
Чтобы уточнить: вы переопределяете метод, поскольку он имеет те же самые имена и те же типы параметров, что и [этот] (http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html # надстройку E-). Вы пытались присвоить ему другой тип возвращаемого значения, но Java не рассматривает тип возвращаемого значения при принятии решения о том, переопределяет ли один метод другой. – ajb