Java-修改列表会修改包含列表的对象

时间:2019-08-01 19:58:27

标签: java list pointers

我需要创建一个客户列表,每个客户都有一个工作列表。 在将列表分配给客户端时,该列表通过引用传递,并且对该列表所做的任何更改(例如,将其清除)也反映在客户端对象中。

Client client = new Client();
Job job = new Job();
List<Job> jobs = new ArrayList<>();
client.job_run_user_login = "razvan";
job.action = "EMAIL";
jobs.add(job);
client.jobs = jobs;
jobs.clear();

运行“ jobs.clear();”行之前的客户端对象:enter image description here

运行“ jobs.clear();”行之前的客户端对象:enter image description here

如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

通过复制收藏集。

client.jobs = new ArrayList<>(jobs);