Я предполагаю, что data
- это имя ArrayList
, которое вы хотите сделать резервную копию. Если это так, вы должны знать, что clone
не deep - он создает только копию объекта, для которого он вызывается, который в данном случае является списком. Если бы это был глубокий клон, он бы заполнил новый список клонами объектов в нем.
Поскольку это не глубоко, если вы измените объекты, содержащиеся в списке, то в списке резервных копий также будут показаны эти изменения, поскольку он содержит те же объекты. Единственный раз, когда вы не увидите изменений в резервной копии после изменения «текущего» списка, это когда вы добавляете или удаляете объекты из текущего списка.
Некоторые классы могут переопределять clone
, чтобы быть глубокими, но не все. В общем, это не то, на что вы можете положиться. При создании резервной копии коллекций Java не забудьте либо клонировать содержащиеся объекты, либо иметь дело только с коллекциями неизменяемых объектов.