Глядя на Спецификация ArrayList Я не вижу метода, который предоставляет эту информацию.
Тем не менее, метод sureCapacity выглядит как шаг в правильном направлении (предупреждение: это не гарантирует правильного ответа ): при вызове он гарантирует, что емкость по крайней мере, указанный аргумент. Таким образом, если реализация ArrayList
использует этот метод для обеспечения емкости (в отличие от вызова какого-либо частного метода / манипулирования соответствующими полями напрямую), вы можете получить текущую емкость, переопределив этот метод. Вам также необходимо переопределить trimToSize()
аналогичным образом.
Конечно, это решение не очень переносимо, так как другая реализация ArrayList
(на JVM от другого поставщика) может действовать иначе.
Вот как должен выглядеть код
public class CapacityTrackingArrayList<T> extends ArrayList<T> {
// declare a constructor for each ArrayList constructor ...
// Now, capacity tracking stuff:
private int currentCapacity = 10;
public int getCapacity() { return currentCapacity; }
public void ensureCapacity(int arg) {
currentCapacity = arg;
super.ensureCapacity(arg);
}
public void trimToSize() { currentCapacity = size(); super.trimToSize(); }
}