Java - 从错误类型转换异常

时间:2015-05-08 19:43:53

标签: java spring classcastexception

运行Java 1.8(和Spring 4.0一起负责部分接线),我有以下代码:

public void doStuff(String color, Collection<String> ids)  {
  for (String id : ids) {

在最后一行,我得到了例外:

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

集合的toString返回:[521356090]

从这段代码传递给这个方法:

doStuff("green", this.regionToIds.get(3L))

为什么我会收到此异常?为什么Set和then集合有一个对象,我的foreach循环有问题?

此类作为资源连接:

private Map<Long, Set<String>> regionToIds;

@Resource(name = Config.REGION_TO_IDS)
public void setRegionToIds(
    final Map<Long, Set<String>> regionToIds) {
    this.regionToIds = regionToIds;
}

配置文件如下所示:

@Bean(name = REGION_TO_IDS)
public Map<Long, Set<String>> getRegionToIds() { .. }

我实际上只是注意到我在Config文件中定义了两个bean,并且返回的值是另一个bean的值,即Map<Long, List<Long>>。但是,它有一个完全不同的bean名称,因此我不明白为什么该资源会引入错误的bean。

1 个答案:

答案 0 :(得分:1)

这是因为我在配置文件中定义的两个bean使用相同的bean名称。我最初错过了这个,因为它们是两个不同的枚举。有趣的是,spring设法将Map<Long,List<Long>>作为Map<Long,List<String>>传递,直到我尝试将List作为List处理,最后它有一个运行时异常。