JSON文字列を取り、モデルのArrayListを返すクラス「モデル」の静的ビルダーメソッドがあります。サブクラスがビルダーメソッドを継承できるように、モデルのコンストラクターを一般的に参照したいと思います。
public class Model
{
protected int id;
public Model(String json) throws JSONException
{
JSONObject jsonObject = new JSONObject(json);
this.id = jsonObject.getInt("id");
}
public static <T extends Model> ArrayList<T> build(String json) throws JSONException
{
JSONArray jsonArray = new JSONArray(json);
ArrayList<T> models = new ArrayList<T>(jsonArray.length());
for(int i = 0; i < jsonArray.length(); i++)
models.add( new T(jsonArray.get(i)) )
return models;
}
}
これはクラスの単純化された実装であり、関連する行は次のとおりです。
models.add( new T(jsonArray.get(i)) )
これが不可能であることはわかっていますが、たまたま T 型のコンストラクターを呼び出すものを書きたいと思います。this() を使用しようとしましたが、メソッド「ビルド」が静的であるため、明らかに機能しません。リフレクションを使用して T のクラスを決定しようとしましたが、それを取得する方法を理解するのに途方に暮れていました仕事に。どんな助けでも大歓迎です。
ありがとう、
ロイ