-2
运行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))
为什么我会得到此异常?为什么设置和然后集合有一个对象,我的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() { .. }
其实我只注意到我在配置文件中定义两个bean,并返回的值是另一个bean的值,它是Map<Long, List<Long>>
。然而,它有一个完全不同的bean名称,所以我不明白为什么这个资源拉错了bean。
该错误似乎不言自明:“this.setOfStringsByLong.get(3L)”或者1)未能返回集合,和/或2)未能将Long元素转换为String元素。对? –
FoggyDay
你能给我们一些关于setOfStringsByLong的更多细节吗?那种返回类型是什么?你可以分享setOfStringsByLong的源代码/ API吗? –
寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现它所需的最短代码。 –