![]() |
1
1
我觉得你的问题不清楚,你说的是什么意思 “我要做的是用更新的值创建一个新列表。但我想把这些新值放入原始数组列表中。这很重要,因为我正在将原始的ArrayList引用传递给一个我不再有权访问的对象,但我需要保持它的内容是最新的。有什么方法可以让Java将内容复制到当前引用中吗?我希望这是有道理的。” 当你这样做的时候
您有一个arraylist对象,以及对该对象的两个引用:a和b。 还要注意,有一个addall方法,您可以使用它将一个集合的成员添加到另一个集合。注意我 相信 addall不做深度复制,因此如果使用它,两个列表都有相同引用的副本。所以,如果列表A引用了A1、A2、A3,而您引用了B.AddAll(A),那么B现在引用了A1…A3指向的对象… |
![]() |
2
0
然而,数组类都公开了public clone()方法,因此如果 那么数组的浅拷贝就足够了
创建一个好的、简单的、易读的范例。如果“elementtype”是 那么原始类型就没有浅与深的区别了。 复制,如果它是不可变的,那么执行深度复制将是 浪费的在其他情况下,你只需要一份浅薄的副本 无论如何都要(您希望接收器能够改变返回的 数组元素,其效果对宿主对象可见)。 如果您发现确实要对数组进行深度复制 那么你可能想考虑一下你的设计是否可以改进;它 不一定如此,但我不会感到惊讶。 |
![]() |
3
0
在Java中,正如我所希望的,到现在为止,所有变量都是引用。除此之外,这意味着除非它们被分配到一个对象,否则它们不会“指向”任何东西。你需要写:
或者a没有指向一个实际的对象——它只是空的。 如果你写:
那么只有一个数组列表。所有的变量a、b和c都指向它。在“修改”方法中所做的任何修改都适用于它,并且将反映在A、B和C的状态中。 |
![]() |
4
0
你是C++代码这样说:
您希望更新arraylist,而不是指向它的指针,因为该指针只在当前上下文中“存在”。如果一个指针返回who know where now指向它使用的同一个arraylist,则传递给arraylist的代码不会给出darn。这是其他代码关心的实际对象。要更新该对象,您可以对其调用方法,例如
但是 还有很多。如果调用一个不控制的函数(现在称为foo),并将其传递给arraylist,那就没问题了。但是如果您想从调用foo的代码中更新它,就会遇到问题。想象一下,如果你正在处理的对象可以随机改变 随时 . 各种各样的坏事都有可能发生。如果你真的需要这种能力(我们可以帮助你判断你是否需要),请研究 threading. |
![]() |
Kris · 有没有办法获得可变结构字段的“引用” 3 年前 |
![]() |
Jora Karyan · IF语句未按预期引发错误 3 年前 |
![]() |
nedzad · 如何访问引用Firebase中其他对象的对象 7 年前 |
![]() |
Empha · 从成员函数对对象所做的更改不会持续。范围/参考问题? 7 年前 |