Sığ Java bir Haritanın kopyası
Anladığım kadarıyla, yollar (başkaları da olabilir) Java Map sığ bir kopyasını oluşturmak için bir çift vardır:
Map<String, Object> data = new HashMap<String, Object>();
Map<String, Object> shallowCopy;
// first way
shallowCopy = new HashMap<String, Object>(data);
// second way
shallowCopy = (Map<String, Object>) ((HashMap<String, Object>) data).clone();
Eğer öyleyse, neden bir diğer tercih edilir, ve?
Bir şeyi belirtmekte yarar ikinci yol "İşaretli Dökme" uyarısı. bir verir. @SuppressWarnings("unchecked") (aşağıya bakınız) biraz rahatsız edici olan, etrafında almak, eklemek zorunda.
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}
CEVAP
Her zaman daha iyi bir kopya kurucu kullanarak kopyalamak için. Java clone() (bkz: How to properly override clone method?) bozuldu.
Josh Bloch on Design - Copy Constructor versus Cloning
Eğer satır aralarını özellikle eğer okursanız benim kitabımda klonlama, ilgili maddenin okuduysanız,
clonederin bir kırık olduğunu düşünüyorum. [ ... ]Cloneablebozuldu ama olur böyle bir şey.
Bloch bu arada, ve çerçeve Koleksiyonu tasarlayan, (kim) bile o sadece clone() yöntem sağlar söyleyerek gitti başka insanlar bekler, çünkü"". Aslında bunu kullanarak tavsiye etmez.
Daha ilginç tartışmalar kopya bir kopya yapıcı bir fabrika daha iyi olup olmadığını düşünüyorum, ama bu tamamen farklı bir tartışma.

Java deÄŸiÅŸmez dizi...
"encoding" için unmappable ka...
Nasıl Ayın gün söylemek format mı&; 11...
Yararlanmak Dize bir Java Her kelimeni...
Nasıl Java temel kullanıcı girişi alma...