【发布时间】:2017-01-12 03:41:41
【问题描述】:
我想知道是否有更优雅的方法来返回属性并更改/“重置”其值。这就是我现在一直在做的方式:
[...]
final List<T> copyOfOriginal = new ArrayList<T>(original);
original.clear();
return copyOfOriginal;
[...]
我真的必须复制整个列表吗?
【问题讨论】:
-
如果您尝试克隆 Arraylist,那么这很好。您正在解决的实际问题是什么?
-
@cricket_007 我想返回并清除列表而不克隆它......这很容易实现(参见 NPE 的答案)
-
什么是
original?是方法参数还是类中的字段(或两者)? -
@Pshemo 这是我不想返回和清除的列表
-
"list I wan't to return and clear" 表示您要返回空列表,这不是您的代码显示的内容。我问了上一个问题,因为如果
original是List<T> cloneAndClear(List<T> original)之类的方法的参数并且您将像List<T> newList = cloneAndClear(someList);一样使用它,那么作为参数传递的someList将不会被NPE 解决方案清除,因为它只交换local 引用(因为 Java 是按值传递的)。所以这里的上下文很重要,应该澄清问题。
标签: java performance list return return-value