Зачем снова преобразовывать массив в список в массив - PullRequest
4 голосов
/ 20 января 2020

Я работал с SpringBatch и искал исходный код класса

org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor<T>

И я нашел это:

public void setNames(String[] names) {
    Assert.notNull(names, "Names must be non-null");
    this.names = Arrays.asList(names).toArray(new String[names.length]);
}
  • Какова цель преобразования Массив в список в массив снова?
  • Почему бы не использовать что-то вроде этого:
public void setNames(String[] names) {
    Assert.notNull(names, "Names must be non-null");
    this.names = names; // Simpler and without conversions
}
  • Или это для создания нового изолированного экземпляра:
public void setNames(String[] names) {
    Assert.notNull(names, "Names must be non-null");
    this.names = names.clone(); //Simpler and create a new instance
}

Все ответы приветствуются.

1 Ответ

2 голосов
/ 20 января 2020

Обычно это делается для создания копии предоставленного массива, хотя это проще сделать с System.arraycopy().

Скопированный массив необходим для того, чтобы сделать принимаемый объект неизменным. Рассмотрим следующий пример без копирования:

String[] names = { "John", "Pat", "Willy" };
obj.setNames(names);
names[0] = "Nathan";
// at which point obj.names also has Nathan
...