Вы не можете сделать эту динамику c, с классом, данным во время выполнения. Чтобы это работало, компилятор должен иметь возможность создать анонимный класс для new TypeToken<List<MyClass>>() {}
. Это не может быть сделано во время выполнения.
Что ж, это возможно, но теперь вы вошли во время создания динамического c байт-кода во время выполнения, поэтому давайте пропустим этот сверхсложный вариант. Задайте другой вопрос, если вы хотите изучить этот маршрут.
Это означает, что вызывающая сторона должна создать TypeToken
анонимный класс, например, так:
private <E> List<E> readJsonList(TypeToken<List<E>> typeToken) {
JSONArray jsonArray = <ReadSomeJsonFile>;
String dataSet = jsonArray.toString();
List<E> testData = new Gson().fromJson(dataSet, typeToken.getType());
return testData;
}
Caller
List<Integer> list = readJsonList(new TypeToken<List<Integer>>() {});