我正在阅读 Joshua Bloch 的 "Effective Java",第39条建议进行防御性拷贝,我有一些问题。我经常使用以下结构:
MyObject.getSomeRef().setSomething(somevalue);
这个缩写代表:
SomeRef s = MyClass.getSomeRef();
s.setSomething();
MyObject.setSomeRef(s);
它总是有效的,但我猜如果我的getSomeRef()
返回一个副本,那么我的快捷方式将不起作用,如何知道是否隐藏了MyObject
的实现以确定是否可以安全使用快捷方式?
addFoo()
方法。 - JB Nizet