首先我要说的是,我无法在此处放置任何代码,因为我的笔记本电脑上的互联网无法正常工作,所以我通过手机发布了此代码。好的,问题是说我有两个类(class):第一类和第二类。类一有一个 ArrayList
作为其属性之一,它调用类二的 void 方法并将该 ArrayList
作为参数传递。现在该方法初始化另一个 ArrayList
并使其等于我传递的参数并对新的 ArrayList
进行更改。有趣的是,即使是作为参数传递的原始 ArrayList 也在发生变化。可能的原因是什么?
最佳答案
问题是,当您使用 = 使新 ArrayList 成为原始数组的副本时,您只是在创建对同一 ArrayList 的新引用。将其视为指向同一对象的两个变量。
检查一下,它可能会帮助您了解正在发生的事情:Is Java "pass-by-reference" or "pass-by-value"?
为了解决您的问题,您需要使用“new”关键字创建一个新的 ArrayList,然后添加所有对象,或者使用 clone() 方法。
关于java - 将 ArrayList 作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504141/