2013-02-04 80 views
-2

我想了解最好的方式共享引用,我不知道我已经完全理解它。如何描述共享参考?

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

问候

+4

我们不知道“共享参考”是什么意思。通常,“共享引用”意味着只有一个对象可以引用两个或更多的东西。由于只有一个对象,所以通过一个引用来改变它,与通过另一个对象改变效果的效果完全相同。但是你可能用“共享参考”来表达别的意思。 –

+0

也在研究类不变式,但不会对今天更感兴趣;) – user1501127

回答

1

如果这些引用的一个改变对方的将是不一样的,并产生错误的,正确的?

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

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

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

在这里,所有的引用都指向同一个对象。所以,如果对象被修改a1,其他参考a2,a3也将看到修改状态。

1

想象一下,你和你的兄弟是在马戏团,你每赢得一个气球和一支笔的奖金。你在气球上画一张满脸幸福的脸,你的兄弟会在他的脸上画一张悲伤的脸。

现在你做都共享引用。你们每个人都可以改变你的气球上绘制的内容而不改变其他的。

可悲的是你不小心松手你的气球,但你的哥哥,因为他爱你,提供了与大家分享他的气球,所以他系上第二个字​​符串,并用手该字符串给你。您现在有共享引用到一个气球。

现在,任何更改都在脸上做的气球会被你们两个共享。有一个气球和两个琴弦。如果你在气球上画一张满脸幸福的脸,你的兄弟也会在气球上找到一张笑脸,因为它们是相同的气球。