ItemOrder
オブジェクトを使用するクラスShoppingCart
があります。ブール戻り値の型はなぜ必要ですか?
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;
を投げ込むだけで安全ですか?それとも実際に使用するべきですか?
を持つことができます:あなたはそれがされるので、あなたも
@Override
注釈が必要であることをはっきりと見ることができますIDE
での作業。 add()を行い、List.add()を尊重しないようにします。それをしないでください。 ArrayListを拡張しないでください。代わりに、ShoppingCartのフィールドとして** Listを使用します。 ShoppingCartはリストではありません。リストを使用して要素を格納することもできます。 –
あなたが 'super.remove(super.indexOf(order));'を実行した場合、次のステートメントの中のindexOfは何ですか? 'super.set(super.indexOf(order)、order);'? –
明確にする:このメソッドは、[this one](http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html)と同じ名前と同じパラメータ型を持つため、メソッドをオーバーライドしています。 #add-E-)。別の戻り値の型を指定しようとしましたが、あるメソッドが別の値を上書きするかどうかを判断する際にJavaは戻り値の型を調べません。 – ajb