1

クラスのスライドの次の部分を理解するのに苦労しています。

ArrayBag へのアイテムの格納:
オブジェクト型の配列にアイテムを格納します。

public class ArrayBag implements Bag {
    private Object[] items; 
    private int numItems; 
....
}  

これにより、ポリモーフィズムの力のおかげで、items 配列に任意のタイプのオブジェクトを格納できます。

ArrayBag bag = new ArrayBag(); 
bag.add("hello"); 
bag.add(new Double(3.1416)); 

ArrayBag は特定の種類のオブジェクトですか、それとも単に Obj 変数名ですか?
3.1416 を Double としてキャストし、新しいものを追加する必要があるのはなぜですか?
(コードが単に bag.add(3.1416) である可能性があり、Java が自動ボックス化することはわかっていますが、bag.add(new Double(3.1416)) の背後にある意味を理解するのに苦労しています)。

4

1 に答える 1

0

ArrayBag は特定の種類のオブジェクトですか、それとも単に Obj 変数名ですか?

ArrayBagオブジェクトの特定のタイプではなく、そのObj 変数ではなく、実際にはClassです。

3.1416 を Double としてキャストし、新しいものを追加する必要があるのはなぜですか?

いいえ、明示的にdoubleas をキャストして (Java 1.5 以降)、プリミティブからオブジェクトにAutoBoxing変換するdouble必要はありません。Double

bag.add(new Double(3.1416) の背後にある意味を理解するのに苦労しています

bagは実際には のインスタンスであり ArrayBagadd()このクラスで定義されたメソッドであり、型のパラメータを取り、Objectそれを配列に追加している可能性があります。itemsこれは の配列に他なりませんObject

于 2015-07-18T19:52:33.987 に答える