别名问题(公共引用类中的私有对象)

时间:2014-07-03 20:46:53

标签: java

我正在阅读Thinking in Java。关于访问的章节(私人,公共等)。这是本书的引文:

  

...只是因为对象的引用在类中是私有的   并不意味着其他一些对象无法公开引用   同一个对象。

然后我们被重定向到该书的在线补充,以了解别名问题。

在官方网站上有一本书的解决方案指南。但这对我来说很贵。

你能否澄清一下别名问题的含义,以便我可以更多地举例说明。

1 个答案:

答案 0 :(得分:5)

这是一个例子

public class Foo {}
public class PrivateExample {
    private Foo foo;
    public PrivateExample (Foo foo) {
        this.foo = foo;
    }
}
public class PublicExample {
    public Foo foo;
}
...
// in some method
Foo foo = new Foo();
PrivateExample privateExample = new PrivateExample(foo);
PublicExample publicExample = new PublicExample();
publicExample.foo = foo;

现在,PrivateExample实例和PublicExample实例都引用了同一个Foo对象。请注意,即使该方法也引用了该对象。因此,即使您无法通过PrivateExample实例访问它,也可以通过其他实例访问它。它不一定安全。