何かを開発しているときに、何かを繰り返しながらオブジェクトの束を作成するためのより良い/より速いアプローチは何でしょうか。
このラッパークラスがあるとしましょう:
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.
}
今、私は3つの可能な解決策を見ます:
一時変数の作成
現在のオブジェクトから目的の値を取得し、新しいオブジェクトを作成する一時変数を作成します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()
に、コンストラクター呼び出しの-methodからの戻り値を使用します。
// Iterate:
for (int i = 0; i < photos.length(); i++){
photo_arr[i] = new Photo(
photos[i].getString("url"),
photos[i].getString("creator")
);
}
セッターメソッドの使用
およびのパラメーターなしのコンストラクターとsetter-methodsをラッパークラスに追加し、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") );
}
ここでは、どちらがより良い/より速い/よりクリーンなアプローチですか?