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

Mic*_*ael 1 java

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

...只是因为对一个对象的引用在类中是私有的并不意味着某些其他对象不能对同一对象具有公共引用.

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

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

你能否澄清一下别名问题的含义,以便我可以谷歌更多的例子.

Sot*_*lis 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;
Run Code Online (Sandbox Code Playgroud)

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