如何从spring hateoas traverson获取泛型类型列表

时间:2016-10-31 12:39:56

标签: generics java-8 spring-data-rest spring-4 spring-hateoas

请考虑以下代码。我试图使用spring-hateoas Traverson类

获取基于泛型responseType的对象列表
    public <T> ArrayList<T> getList(String path, Class<T> responseType) {
    String url = decodeURL(host + path);

    try {
        ParameterizedTypeReference<Resources<T>> typeReference = new ParameterizedTypeReference<Resources<T>>() {
        };
        Traverson traverson = new Traverson(new URI(url), MediaTypes.HAL_JSON);
        Resources<T> t = traverson.follow().toObject(typeReference);

        ArrayList<T> list = new ArrayList<T>();
        list.addAll(t.getContent());

        return list;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

这是我的常用方法,使用此方法我要求许多REST API使用不同类型的对象。例如

List<User> users = getList("/users", User.class);

直到现在一切正常。但是当迭代用户时,它会抛出以下错误

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.foo.data.User

有什么想法吗?我在这里做错了什么?

0 个答案:

没有答案