使用RestTemplate调用Java中另一个RESTful服务的ResponseEntity

时间:2018-08-31 12:05:38

标签: java rest spring-boot

@RequestMapping(“ / viewall”)     public String getAllEmployees(Model model){

    RestTemplate restTemplate = new RestTemplate();

    @SuppressWarnings({ "unchecked", "rawtypes" })
    Collection<Map> entity = (ArrayList<Map>) restTemplate.getForObject("http://localhost:8080/employees", Collection.class);

            List<Employee> tempListForEmployee = new ArrayList<>();

    for(Map map : entity) {

        for(Map.Entry entry : map.entrySet()) { // map.entrySet() ..1
            tempMapForEmployee.add((Employee) entry.getValue());
        }

    }

    model.addAttribute("emp", tempMapForEmployee);

    return "viewall";
}

为什么..1出现错误,因为“类型不匹配:无法从元素类型Object转换为Map.Entry” 预先感谢

2 个答案:

答案 0 :(得分:0)

我不知道您的map键,假设键是'String'

代替..

for(Map map : entity) {

    for(Map.Entry entry : map.entrySet()) { // map.entrySet() ..1
        tempMapForEmployee.add((Employee) entry.getValue());
    }

}

在下面使用。

for(Map /*Mention the map key, value type here <key,value>*/ map: entity) {

    for(Map.Entry<String, Employee>  entry : map.entrySet()) { // map.entrySet() ..1
        tempMapForEmployee.add((Employee) entry.getValue());
    }

}

答案 1 :(得分:0)

最快的解决方法是让编译器知道Map

的参数。
    for (Map<?,?> map : entity) {
        for (Map.Entry<?, ?> entry : map.entrySet()) {
            tempListForEmployee.add((Employee) entry.getValue());
        }
    }

但是您可以考虑在此代码上进行很多改进,例如

    for (Map<?,Employee> map : entity) {
        tempListForEmployee.addAll(map.values());
    }