Если под «переменной длиной» вы подразумеваете, что размер будет меняться со временем, то вам, вероятно, нужен LinkedList, а не ArrayList:
print("List<Foo> fooList = new LinkedList<Foo>();");
Таким образом, вы получаете лучшую производительность при добавлении нескольких элементов.