У меня есть метод статического построения для класса «Модель», который принимает строку 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)))
Я знаю, что это не возможно, но я хотел бы написать что-то, что вызывает конструктор любого типа Т бывает. Я попытался использовать this(), который, очевидно, не работает, потому что метод «build» является статическим, и я попытался использовать отражение, чтобы определить класс T, но был в затруднении, чтобы выяснить, как его получить работать. Любая помощь приветствуется.
Спасибо,
Рой
Как вы решите, что вам нужно подкласс? Это решение должно быть сформулировано и написано в коде как-то. Является ли решение основано на возвращаемом значении от jsonArray.get (i)? (Что все-таки возвращает этот метод?) – perp