我有一个类“模型”的静态生成器方法,它需要一个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