如何描述共享引用?

时间:2013-02-04 11:21:12

标签: java

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

我对共享引用的理解是当我有一个集合并且在代码中存在两个或多个对该特定集合的引用时,如果在其中一个引用中对其进行更改,则另一个引用将不相同并生成错误,正确?

此致

2 个答案:

答案 0 :(得分:1)

  

如果在其中一个引用中更改了另一个引用,那么其他引用将不相同并生成错误,是否正确?

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

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

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

这里,所有引用都指向同一个对象。因此,如果对象由a1修改,则其他引用a2a3也会看到修改状态。

答案 1 :(得分:1)

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

现在你有共享引用。你们每个人都可以在不改变另一个的情况下改变气球上绘制的内容。

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

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