我正在尝试使用JSON-B API从文件中反序列化json。
这是代码
public List<User> getUsers(String file) {
InputStream is = getResourceAsStream(file);
return JsonbBuilder.create().fromJson(is, new ArrayList<User>(){}.getClass().getGenericSuperclass());
}它如预期的那样工作。
我试图推广这个方法,而不是硬编码User,但它似乎行不通
public static <T> List<T> getFromSource(String file, Class<T> t) {
InputStream is = getResourceAsStream(file);
return getJsonb().fromJson(is, t.getGenericSuperclass());
}试图调用上述方法
List<User> users = getFromSource("users.json", User.class);
User user = user.get(0);但是,它抛出了Exception in thread "main" java.lang.ClassCastException: java.util.HashMap incompatible with User所以,看起来它是一个List<HashMap>尽管List<User>
发布于 2020-05-21 16:43:43
在您的工作方法中,类型是:
new ArrayList<User>(){}.getClass().getGenericSuperclass()但是,您要传递到getFromSource()方法中的内容实际上是:
User.class.getGenericSuperclass()要解决这个问题,您需要更新传入的参数,如下所示:
List<User> users = getFromSource("users.json", new ArrayList<User>(){}.getClass());https://stackoverflow.com/questions/61932816
复制相似问题