【发布时间】:2015-05-08 19:43:52
【问题描述】:
运行 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。
【问题讨论】:
-
这个错误似乎不言自明:
this.setOfStringsByLong.get(3L)是 1) 未能返回 Collection,和/或 2) 未能将 Long 元素转换为 String 元素。对吗? -
你能告诉我们更多关于 setOfStringsByLong 的细节吗?该 get 的返回类型是什么?你能分享 setOfStringsByLong 的源代码/API 吗?
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。跨度>
-
@HotLicks 感谢您的信息。期望的行为是不抛出异常。
标签: java spring classcastexception