У меня есть метод статического компоновщика для класса «Модель», который принимает строку JSON и возвращает ArrayList of Models. Я хотел бы, чтобы он ссылался на конструктор Модели в целом, чтобы подклассы могли наследовать метод построителя.
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 (), который, очевидно, не работает, потому что метод "build" является статическим, и я пытался использовать отражение, чтобы определить класс T, но не мог понять, как его получить работать. Любая помощь с благодарностью.
Спасибо
Рой