ตามที่ฉันเข้าใจมีสองวิธี (อาจเป็นวิธีอื่นเช่นกัน) ในการสร้างสำเนาตื้นของMap
Java:
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();
วิธีหนึ่งเป็นที่ต้องการมากกว่าอีกวิธีหนึ่งและถ้าเป็นเช่นนั้นทำไม?
สิ่งหนึ่งที่ควรกล่าวถึงคือวิธีที่สองให้คำเตือน "Unchecked Cast" ดังนั้นคุณต้องเพิ่ม@SuppressWarnings("unchecked")
เพื่อหลีกเลี่ยงซึ่งเป็นเรื่องที่น่ารำคาญเล็กน้อย (ดูด้านล่าง)
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}