Нет, нет, и любая эквивалентная конструкция (которая просто хранит int n и поставщика и вызывает поставщика для каждого get
) кажется ужасной идеей. Тем не менее, очевидно, вы просто хотите прочитать n объектов из Supplier
и сохранить их в списке. В этом случае ответ Шона, вероятно, лучший.
Просто для забавы, вот еще один способ создать ImmutableList
размера n, вызвав Supplier
n раз (transform
, limit
и cycle
все из Iterables
):
public static <T> ImmutableList<T> nInstances(int n, Supplier<T> supplier) {
return ImmutableList.copyOf(transform(
limit(cycle(supplier), n), Suppliers.<T>supplierFunction()));
}
Я ... не рекомендую это по сравнению с простой реализацией цикла (в основном для удобства чтения).