如何使用 GSON.fromJson 和变量中提供的类型?
How to get use GSON.fromJson with type provided in a variable?
我想按以下方式使用 GSON.fromJSON:
Class<?> type = Abc.class;
Class<?> parametersObject = GSON.fromJson(parameters, type);
但是我在第二行遇到编译错误。如何推断下一行的 return 类型?我知道在上述情况下它将是 Abc 类型。但我想根据类型变量中指定的内容使其动态化。我怎样才能做到这一点?
尝试使用以下代码。关于 class 和方法签名 link.
中 ?
和 T
之间的区别的问题
public class Tests<T> {
@Test
public void test01() {
Tests<String> stringTest= new Tests<>();
System.out.println(stringTest.parseObject("testtestt", String.class));
}
public T parseObject(String parameters, Class<T> clazz) {
Gson gson = new Gson();
T obj = (T) gson.fromJson(parameters, clazz);
return obj;
}
}
``
UPD:
声明<T> T
方法的返回类型。
@Test
public void test02() {
String stringstring = parseObject02("stringstring", String.class);
System.out.println(stringstring);
List list = parseObject02("[1,2,3]", List.class);
System.out.println(list);
// output in console
// stringstring
// [1.0, 2.0, 3.0]
}
public <T> T parseObject02(String parameters, Class<T> clazz) {
Gson gson = new Gson();
T obj = gson.fromJson(parameters, clazz);
return obj;
}
我想按以下方式使用 GSON.fromJSON:
Class<?> type = Abc.class;
Class<?> parametersObject = GSON.fromJson(parameters, type);
但是我在第二行遇到编译错误。如何推断下一行的 return 类型?我知道在上述情况下它将是 Abc 类型。但我想根据类型变量中指定的内容使其动态化。我怎样才能做到这一点?
尝试使用以下代码。关于 class 和方法签名 link.
中?
和 T
之间的区别的问题
public class Tests<T> {
@Test
public void test01() {
Tests<String> stringTest= new Tests<>();
System.out.println(stringTest.parseObject("testtestt", String.class));
}
public T parseObject(String parameters, Class<T> clazz) {
Gson gson = new Gson();
T obj = (T) gson.fromJson(parameters, clazz);
return obj;
}
}
``
UPD:
声明<T> T
方法的返回类型。
@Test
public void test02() {
String stringstring = parseObject02("stringstring", String.class);
System.out.println(stringstring);
List list = parseObject02("[1,2,3]", List.class);
System.out.println(list);
// output in console
// stringstring
// [1.0, 2.0, 3.0]
}
public <T> T parseObject02(String parameters, Class<T> clazz) {
Gson gson = new Gson();
T obj = gson.fromJson(parameters, clazz);
return obj;
}