private void passClassName(String className) {
JSONArray jsonArray = <ReadSomeJsonFile>;
String dataSet = jsonArray.toString();
List<className> testData = new Gson().fromJson(dataSet, new TypeToken<List<className>>() {}.getType());
}
在这里,我想将ClassName作为参数传递。但是由于该类将无法通过参数访问。因此它将不起作用。我已经尝试过similar solutions。到目前为止,对我来说什么都没有。
答案 0 :(得分:1)
在运行时给定类的情况下,您无法使其动态化。为此,编译器必须能够为new TypeToken<List<MyClass>>() {}
创建一个匿名类。那不能在运行时完成。
可以,但是现在您可以在运行时创建动态字节码,因此让我们跳过该超级复杂的选项。询问另一个问题是否要探索那条路线。
这意味着调用者必须创建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;
}
呼叫者
List<Integer> list = readJsonList(new TypeToken<List<Integer>>() {});