我有一個類「模型」的靜態生成器方法,它需要一個JSON字符串並返回一個模型的ArrayList。我希望它通常引用模型的構造器,以便子類可以繼承構建器方法。如何以通用方式訪問Java構造函數?
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的類,但一直在弄清楚如何得到它上班。任何幫助是極大的讚賞。
感謝,
羅伊
你如何決定你需要什麼子?這個決定需要以某種方式制定和編寫。是基於jsonArray.get(i)的返回值的決定嗎? (無論如何,該方法會返回什麼?) – perp 2010-11-11 06:56:20