Чтобы ограничить ArrayList
, вы могли бы переопределить метод ensureCapacity(int minCapacity)
, как в следующем примере:
public static class MyArrayList<T> extends ArrayList<T> {
@Override
public void ensureCapacity(int minCapacity) {
if (minCapacity > 10) {
throw new IllegalArgumentException();
}
super.ensureCapacity(minCapacity);
}
}
Небольшой тест можно выполнить с помощью следующего кода:
public static void main(String[] args) {
MyArrayList<String> items = new MyArrayList<String>();
for (int i = 0; i < 15; i++) {
try {
items.add("itm " + i);
System.out.println("succeeded to insert " + i);
} catch (IllegalArgumentException e) {
System.out.println("not able to insert " + i);
}
}
System.out.println("items are: " + items);
}
Это напечатает:
succeeded to insert 0
succeeded to insert 1
succeeded to insert 2
succeeded to insert 3
succeeded to insert 4
succeeded to insert 5
succeeded to insert 6
succeeded to insert 7
succeeded to insert 8
succeeded to insert 9
not able to insert 10
not able to insert 11
not able to insert 12
not able to insert 13
not able to insert 14
items are: [itm 0, itm 1, itm 2, itm 3, itm 4, itm 5, itm 6, itm 7, itm 8, itm 9]