Когда я что-то разрабатывал, я задавался вопросом, что может быть лучшим / более быстрым подходом для создания группы объектов при переборе чего-либо.
Допустим, у нас есть этот класс-обёртка:
public class Photo{
private String url;
private String creator;
public Photo(String url, String creator){
this.url = url;
this.creator = creator;
}
// Getter methods down here...
}
И у нас есть JSONArray
фотографий, из которых нам нужны только строки url
- и creator
:
JSONArray photos = json.getJSONArray("photos");
Photo[] photo_arr = new Photo[photos.length()];
// Iterate:
for (int i = 0; i < photos.length(); i++){
// Create the objects here.
}
Теперь я вижу три возможных решения:
Создание временных переменных
Создание некоторых временных переменных, которые получают нужные значения из текущего объекта, а затем создают новый Photo
-объект:
// Iterate:
String url = "";
String creator = "";
for (int i = 0; i < photos.length(); i++){
url = photos[i].getString("url");
creator = photos[i].getString("creator");
photo_arr[i] = new Photo(url, creator);
}
Использовать возвращаемые значения непосредственно в конструкторе
Не создавайте временные переменные, а используйте возвращаемые значения из getString()
-метода в вызове конструктора:
// Iterate:
for (int i = 0; i < photos.length(); i++){
photo_arr[i] = new Photo(
photos[i].getString("url"),
photos[i].getString("creator")
);
}
Использование методов установки
Добавление конструктора без параметров и методов установки для url
и creator
к классу-обертке и использование их для заполнения объекта:
// Iterate:
for (int i = 0; i < photos.length(); i++){
photo_arr[i] = new Photo();
photo_arr[i].setUrl( photos[i].getString("url") );
photo_arr[i].setCreator( photos[i].getString("creator") );
}
Какой подход лучше / быстрее / чище?