Java 从多个对象引用同一ArrayList
我想知道如何从多个对象引用同一ArrayList。 下面不是一个真实的例子,它只是为了解释而编造的 如果我有一个带有Java 从多个对象引用同一ArrayList,java,Java,我想知道如何从多个对象引用同一ArrayList。 下面不是一个真实的例子,它只是为了解释而编造的 如果我有一个带有ArrayList字段的CarCatalog类: ArrayList<Car> cars = new ArrayList<>(); 并将参数指定给CarCreator对象中的字段: class CarCreator { ArrayList<Car> cars; public CarCreator(ArrayList cars)
ArrayList
字段的CarCatalog
类:
ArrayList<Car> cars = new ArrayList<>();
并将参数指定给CarCreator
对象中的字段:
class CarCreator {
ArrayList<Car> cars;
public CarCreator(ArrayList cars) {
this.cars = cars;
}
}
它是否也会出现在CarCatalogs
字段中?是的。当你写作时:
ArrayList<Car> cars = new ArrayList<>();
ArrayList cars=new ArrayList();
cars不是阵列列表
。它是对阵列列表的引用。这是至关重要的,因为当你传递汽车时,你传递的是对原始列表的引用。因此,在一个对象中修改列表将意味着这些更改在第二个对象中可见
这里有一个关于不可变对象的有力论据。也就是说,无法更改的对象。显然,这并不总是可行的,所以你需要弄清楚谁拥有这个列表,谁可以更改它,并尽可能地传递副本或不可变的版本。这通常被称为防御性编程。你试过吗?反问句是反问句。你可以试试看。也就是说,您似乎不了解对象在Java中是如何工作的;您可能希望阅读Oracle提供的教程,或者获得一本关于Java的优秀初学者书籍。不理解基本原理会使编写代码变得非常非常困难。
this.cars
ArrayList<Car> cars = new ArrayList<>();