То, что я пытаюсь сделать, и я не знаю, возможно ли это, - получить тип класса объекта, а затем использовать его в объявлении , Я использую библиотеку Gson для Json Conversion, и я хочу создать метод, который может взять любой объект Arraylist и преобразовать его в JsonArray. То, что у меня есть, это код. Arraylist типа X будет отбрасываться до типа Object и передан ниже. INSERT_CLASS_HERE должен быть динамическим на основе типа объекта.Получить класс Тип объекта и использовать его в объявлении переменной
public static JsonArray getJsonArray(List<Object> list , Class theClass){
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(list, new TypeToken<List<INSERT_CLASS_TYPE_HERE>>() {}.getType());
if (! element.isJsonArray()) {
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
JsonArray jsonArray = element.getAsJsonArray();
return jsonArray;
}
Что я попытался было следующее, но это не правильный синтаксис и будет бросать ошибки
public static JsonArray getJsonArray(List<Object> list , Class theClass){
if(list.size() == 0) return null;
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(list, new TypeToken<List<theClass>>() {}.getType());
if (! element.isJsonArray()) {
// fail appropriately
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
JsonArray jsonArray = element.getAsJsonArray();
return jsonArray;
}
1) Возможно ли это сделать, и если нет, то почему? 2) Если это не так, как это можно достичь?
Спасибо!
Если вы приводите его, пока это не объект, '.getClass()' просто вернет объект ... – River
Кроме того, как правило, в Java , [generics] (https://docs.oracle.com/javase/tutorial/java/generics/) используются для такого рода вещей – River
Тогда предположим, что я передаю тип класса в качестве параметра. – applecrusher