我会在ArrayList周围编写一个包装类,在add和addAll方法中,我会在添加新元素之前检查列表的大小.如果已达到最大大小,则可以抛出异常(或不执行任何操作,具体取决于您在代码中的确要执行的操作).
这是一个简短的例子:
public class SizeLimitedArray implements java.util.List
{
private static final int DEFAULT_SIZE_LIMIT = 10;
private ArrayList myList;
private int maxSize;
public SizeLimitedArray ()
{
this (DEFAULT_SIZE_LIMIT);
}
public SizeLimitedArray (int size)
{
myList = new ArrayList (size);
maxSize = size;
}
@Override
public boolean add (E objectToAdd)
{
if (myList.size () > maxSize)
{
throw new IllegalStateException ("The array is full");
}
return myList.add (objectToAdd);
}
@Override
public boolean addAll (Collection collectionToAdd)
{
if (myList.size () + collectionToAdd.size () > maxSize)
{
throw new IllegalStateException ("The array is full");
}
return myList.addAll (collectionToAdd);
}
// Rest of class omitted for brevity
}