Старый вопрос, но я бы предположил, что это предпочтительный способ сделать это в java8 +
public <T> ArrayList<T> dynamicAdd(ArrayList<T> list, Supplier<T> supplier) {
list.add(supplier.get());
return list;
}
, и его можно использовать так:
AtomicInteger counter = ...;
ArrayList<Integer> list = ...;
dynamicAdd(list, counter::incrementAndGet);
это добавит числок списку, получая значение из incrementAndGet
метода AtomicInteger
Также возможно использовать конструкторы в качестве ссылок на методы, как это: MyType::new