У меня вопрос: правильно ли перерабатывать объект массива tempList2?
Я не совсем понимаю, что вы подразумеваете под "перезаписью".Похоже, это не тот случай, когда приложение перерабатывает объекты в попытке избежать выделения новых объектов.(Это обычное значение «рециркуляции» в Java.)
Если getXYZ
вызывается несколько раз с одним и тем же tempList2
объектом, то это просто способ объединения материала в один список.Тот факт, что getXYZ
возвращает ArrayList
, оставляет возможность того, что реализация метода может быть изменена для возврата другого экземпляра ArrayList
.Это не проблема per se , но может случиться так, что вызывающий абонент не назначит результат вызова соответствующим образом.
Если getXYZ
вызывается только один раз для любого заданного tempList2
объект, то это выглядит немного странно.
В целом, этот код выглядит немного подозрительно и хрупок, если кто-то изменит реализацию getXYZ
.Тем не менее, это не совсем неправильно, и может быть какая-то веская причина (или историческая причина) для того, чтобы действовать таким образом, что неочевидно в небольших кусках кода, которые вы включили в вопрос.
EDIT - в ответ на этот комментарий (встроенный, чтобы сделать его читабельным)
На самом деле причина в приведенном выше коде состоит в том, что я хотел избежать создания двух объектов arraylist.Например: обычный метод будет
ArrayList tempList2 = new ArrayList();
tempList2 = getXYZ(tempList1);
//method getXYZ
getXYZ(ArrayList tempList1) {
ArrayList tempList = new ArrayList();
//INSTANTIATED ONLY ONCE
//does some logic and adds objects into tempList
return tempList;
}
real обычный способ сделать это будет:
ArrayList tempList2 = getXYZ(tempList1);
или
ArrayList tempList2;
// some intermediate lines
tempList2 = getXYZ(tempList1);
Ни один из них не требует создания ненужного ArrayList
экземпляра вашего подхода, и ни один не требует передачи 2 ArrayList
экземпляров в метод getXYZ
.