java - 如何从指针中删除对象?

标签 java

我有一个添加到几个不同 ArrayList 的对象。我想避免更改每个列表,所以我试图更改指针以便更改所有列表。但是如果我想将对象设置为 null,我就无法让它工作。例如:

ArrayList<Point> list1 = new ArrayList<Point>();
ArrayList<Point> list2 = new ArrayList<Point>();
Point a = new Point(2, 3);
list1.add(a); list2.add(a);

此时,两个列表都有一个指向同一个对象的项目。值为“2、3”。如果我更改对象的值。然后两个列表都发生变化:

a.set(5,5);

现在两个列表都有一个值为“5, 5”的项目。但是,如果我尝试将该值设置为 null。

a = null;

现在 a 设置为 null,但是两个列表中的对象仍然是“5, 5”,而不是我想要的 null。我什至尝试向 Point 类添加一个方法以将其自身设置为 null。但我也无法让它发挥作用。如何仅通过更改指针来删除所有列表中的对象?

最佳答案

您可以更改引用变量持有的对象的状态,这将反射(reflect)在引用同一对象的所有变量中,但如果您更改引用变量的赋值,则只会影响该变量。引用的对象未更改——正如预期的那样。

关于java - 如何从指针中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038513/

相关文章:

java - Spring JMX - <context :mbean-server> 的用途

java - 对于参数化类来说,使用类(而不是接口(interface))作为类型是一种不好的做法吗?

java - 如何使用递归构建嵌套链表?

java - 避免在我的 Android 应用中重复按钮代码

java - 从 sftp 下载多个文件

java - 无法通过 AssetManager - libgdx 从 zip 存档加载 TextureAtlas

java - Windows上使用openssl C++的RSA加密/解密错误

java - 如何将 JodaTime 与 Spring 和 Hibernate 一起使用?

java - LL1 boolean 运算符语法实现递归下降解析器

java - 对主代码和测试代码使用antlr4-maven-plugin