2011-10-28 17 views

cevap

29

yapılan bina ya da bunların verilerinin Kopyalama yok onların referansları kopyalamak; referansları sadece liste nesnesine eklenir.

+0

Yani ne olacak? Listeye otomatik olarak eklenecek mi? – iamprem

+0

Hayır, elbette değil. –

+0

"List2" de bir öğeyi değiştirdiysem, sonra çıktının çıktısını "list" doğru görebileceğim anlamına gelir? –

4

Hayır, nesneler kopyalanmayacaktır; Aynı nesnelere yapılan referanslar listeye eklenecektir. Eğer yani nesneler için, orijinallerine işaretçileri kullanılır, "Tüm add" Genel olarak

+0

Ancak sözleşme bunu uyguluyor mu? ArrayList uygulamasının addAll() öğesini sığ bir kopyayla uyguladığını görüyorum, ancak dokümanda bir özellik yok. –

+2

@ZiyaoWei "Tüm unsurları ekliyor" diye belirtiyor, yani yapacağı şey budur - tüm unsurları ekleyin. Bir elemanın bir kopyası eleman değildir, bu bir kopyadır. –

+0

@ZiyaoWei: Java'da bir nesneyi kopyalamanın genel bir yolu yoktur: C++ 'da olduğu gibi otomatik olarak oluşturulmuş kopya oluşturucular yoktur ve' clone() 'yöntemi çok az sınıf tarafından desteklenir. Bu nedenle, tüm unsurlarını kopyalamak için * isteyen bir kap, bunu yapamazdı. –

3

, java nesneleri kopyalamak olmaz.

* Ama dikkatli olun! Dizeler için, değişmezlik nedeniyle, bir dizi kopyası orijinal dizgi değerlerini göstermez ve bir dizi listesine eklenen bir dizgeye bir işaretçi değiştirmenin dizi listesinin içinde yeni bir değere neden olmasını beklememeniz gerekir. biz `list2` daha sonra bir öğe eklerseniz

+0

Bir kopyasını nasıl oluşturursunuz? – Jacolack