向 List 重複添加同一個對象實例,修改其中一個元素屬性導致所有元素數據同步變化。
List 存儲的是對象引用。若多次添加同一 new Object(),所有索引指向堆上同一內存地址。
定義實體類封裝數據,每次添加創建新實例:
public class WeatherInfo {
public String city;
public String temperature;
}
// 使用
List list = new ArrayList<>();
WeatherInfo info1 = new WeatherInfo();
info1.city = "北京";
info1.temperature = "晴 25℃";
list.add(info1);
WeatherInfo info2 = new WeatherInfo(); // 新實例
info2.city = "上海";
info2.temperature = "多雲 22℃";
list.add(info2);
clone() 或拷貝構造函數創建新實例。理解引用語義,避免「同一對象多處引用」導致的邏輯錯誤。