-2

我试图以最好的方式理解共享引用,但我不确定我是否完全理解它。

我对共享引用的理解是,当我有一个集合并且代码中存在对该特定集合的两个或多个引用时,如果其中一个引用发生更改,另一个引用将不一样并产生错误,对吗?

问候

4

2 回答 2

2

想象一下,你和你的兄弟在马戏团,你们每个人都赢得了一个气球和一支笔的奖品。你在气球上画了一张快乐的脸,而你的兄弟在他的气球上画了一张悲伤的脸。

现在您没有共享参考。你们每个人都可以更改气球上绘制的内容,而无需更改另一个。

可悲的是,你不小心放开了你的气球,但你的兄弟因为爱你,提议与你分享他的气球,所以他在气球上系了第二根绳子,然后把那根绳子递给了你。您现在已共享对一个气球的引用。

现在,无论对气球上的面部所做的任何更改都将由你们俩共享。有一个气球和两个绳子。如果你在你拿着的气球上画一张快乐的脸,你的兄弟也会在他拿着的气球上找到一张快乐的脸,因为它们是同一个气球。

于 2013-02-04T11:38:02.200 回答
1

如果在其中一个引用中更改它,另一个引用将不一样并产生错误,对吗?

正确但部分。如果集合的内容通过一个引用发生更改,则另一个引用也将指向更新的内容。

你的另一部分说,它会产生错误。好吧,这取决于逻辑。

class A
{
    public static void main(String[] args)
    {
        A a1 = new A();
        A a2 = a1;
        A a3 = a2;
    }
}

在这里,所有的引用都指向同一个对象。因此,如果对象被 修改a1,其他引用a2a3将看到修改状态。

于 2013-02-04T11:25:11.297 回答