find-bug错误字符串无法转换为Util.Map

时间:2019-05-28 09:15:47

标签: java

发现错误表明String无法转换为util.Map

通过应用程序运行时获得正确的结果。 siteList看起来为[{site_id = 47,site_code = a},{site_id = 48,site_code = ABC},{site_id = 49,site_code = ABCD},{site_id = 54,site_code = ABCE},{site_id = 1,site_code = FXGL}]

public static List<SitesDto> transformSites(List<String> siteList) {
                List<SitesDto> sitList = new ArrayList<>();
                for (Object object : siteList) {
                    Map row = (Map) object;----->showing error
                    final SitesDto site = new SitesDto();
                    String code = (String) row.get(SITE_CODE);
                    Object id = row.get(SITE_ID);
                    site.setSiteId(((Number) id).longValue());
                    site.setSiteCode(code);
                    sitList.add(site);
                }
                return sitList;
            }

发现错误表明String无法转换为util.Map

2 个答案:

答案 0 :(得分:0)

java.util.Map接口表示键和值之间的映射。 在这种情况下,siteList是String的集合(它们不是Map所期望的键和值对),因此String无法转换为util.Map的错误也是如此。

传入的列表参数应为List<Map<String,Object>>

希望有帮助。

答案 1 :(得分:0)

您声明一个接受List<String>参数的方法。由于您说应用程序运行时没有任何明显的错误,因此看来siteList参数实际上根本不是List<String>,而是List<Map>。您可能在其他地方发现了一个findbugs警告,可能是在调用transformSites的方法中说,您不应该使用原始类型,或者不应该将List<Map>传递给需要List<String>参数。您应该先解决该问题。您还应该避免使用原始类型:使用List<whatever>而不是List,而使用Map<String, Number>而不是Map。否则,您将更容易出错。