chr*_*ney 8 java pass-by-reference
请考虑以下代码段:
class MyClass{
private List myList;
//...
public List getList(){
return myList;
}
}
Run Code Online (Sandbox Code Playgroud)
当Java通过值传递对象引用时,我的理解是任何对象调用getList()都将获得myList对它的引用,允许它在myList不管它的情况下进行修改private.那是对的吗?
而且,如果它是正确的,我应该使用
return new LinkedList(myList);
Run Code Online (Sandbox Code Playgroud)
创建副本并传回对副本的引用,而不是原始副本,以防止未经授权访问引用的列表myList?
我这样做.更好的是,有时我使用Collections API返回一个不可修改的副本.
如果您不这样做,您的参考不是私人的.任何有参考的人都可以改变您的私人状态.对于任何可变引用(例如,Date)也是如此.
| 归档时间: |
|
| 查看次数: |
3606 次 |
| 最近记录: |