我试图以最好的方式理解共享引用,但我不确定我是否完全理解它。
我对共享引用的理解是,当我有一个集合并且代码中存在对该特定集合的两个或多个引用时,如果其中一个引用发生更改,另一个引用将不一样并产生错误,对吗?
问候
我试图以最好的方式理解共享引用,但我不确定我是否完全理解它。
我对共享引用的理解是,当我有一个集合并且代码中存在对该特定集合的两个或多个引用时,如果其中一个引用发生更改,另一个引用将不一样并产生错误,对吗?
问候
想象一下,你和你的兄弟在马戏团,你们每个人都赢得了一个气球和一支笔的奖品。你在气球上画了一张快乐的脸,而你的兄弟在他的气球上画了一张悲伤的脸。
现在您没有共享参考。你们每个人都可以更改气球上绘制的内容,而无需更改另一个。
可悲的是,你不小心放开了你的气球,但你的兄弟因为爱你,提议与你分享他的气球,所以他在气球上系了第二根绳子,然后把那根绳子递给了你。您现在已共享对一个气球的引用。
现在,无论对气球上的面部所做的任何更改都将由你们俩共享。有一个气球和两个绳子。如果你在你拿着的气球上画一张快乐的脸,你的兄弟也会在他拿着的气球上找到一张快乐的脸,因为它们是同一个气球。
如果在其中一个引用中更改它,另一个引用将不一样并产生错误,对吗?
正确但部分。如果集合的内容通过一个引用发生更改,则另一个引用也将指向更新的内容。
你的另一部分说,它会产生错误。好吧,这取决于逻辑。
class A
{
public static void main(String[] args)
{
A a1 = new A();
A a2 = a1;
A a3 = a2;
}
}
在这里,所有的引用都指向同一个对象。因此,如果对象被 修改a1
,其他引用a2
也a3
将看到修改状态。