示例代码:
modifyMyList(myList);
public void modifyMyList(List someList){
    someList.add(someObject);
}
要么:
List myList = modifyMyList(myList);
public List modifyMyList(List someList){
    someList.add(someObject)
    return someList;
}
我相信还有第三个选项:你可以在modifyMyList方法中创建一个新的List并返回这个新的List ...
(第三个选项在这里,我太懒了但有人已经在答案中加了它:)
List myList = modifyMyList(myList);
public List modifyMyList(List someList){
    List returnList = new ArrayList();
    returnList.addAll(someList);
    returnList.add(someObject);
    return Collections.unmodifiableList(returnList);
}
我有什么理由选择一个而不是另一个吗?在这种情况下应该考虑什么?
lan*_*ava 16
我有一个(自我强加的)规则,"永远不会改变公共方法中的方法参数".因此,在私有方法中,可以改变参数(我甚至试图避免这种情况).但是在调用公共方法时,参数永远不应该被改变,应该被认为是不可变的.
我认为变异方法论点有点hacky并且可能导致更难以看到的错误.
我知道这个规则有例外,但我需要一个很好的理由.
| 归档时间: | 
 | 
| 查看次数: | 6704 次 | 
| 最近记录: |