ArrayList是可变的吗?

时间:2019-01-02 13:28:45

标签: java arraylist immutability

我有一个包含Arraylist ArrayList<Move> moves的类。 我从另一个类中调用该Arraylist的getter并添加一个动作:panel.getMoves().add(move)。但是,当我此后遍历Arraylist时,会出现一些非常奇怪的错误,提示这些移动未正确添加。

我必须打panel.setMoves(panel.getMoves().add(move))吗?如果是这样,为什么,我一直认为列表是可变的?

1 个答案:

答案 0 :(得分:4)

这取决于如何实现getMoves()

它可以返回内部ArrayList的副本(您必须调用setMoves(ArrayList)才能更新它),或发布对其的直接引用(不需要设置器)。不过,后者表示封装不良。

ArrayList的任何实例都是可变的。它基本上是动态大小的数组的包装器。可以修改其元素。