Java中 java.lang.Long 无法转换为 java.lang.String。

22

我以这种方式获得响应:

[{Id=1066276530, Key1=1815401000238}, {Id=1059632250, Key1=1815401000244}]

当我迭代并将值转换为字符串时,它会抛出错误:

java.lang.Long cannot be cast to java.lang.String in Java

 for (Map<String, String> map : leadIds) {
        for (Map.Entry<String, String> entry : map.entrySet()) {
            String applicationNumber = (String) entry.getValue();
        }
}

我想将这个值转换为字符串。这里有任何问题吗?


7
看起来你已经强制使用泛型,以便让编译器认为你有一个 Map<String, String>,而实际上你有一个 Map<String, Long>。请展示 leadIds 的声明。 - Boris the Spider
2个回答

21

使用String.valueOf()代替强制类型转换:

for (Map<String, Long> map : leadIds) {
        for (Map.Entry<String, Long> entry : map.entrySet()) {
            String applicationNumber = String.valueOf(entry.getValue());
        }
}

1
Entry<String, String>已经将getValue设为String。无论添加多少个任意的toString调用也不会改变这一点。问题出在泛型上。 - Boris the Spider
好的,我知道你的问题。你能上传处理输入数据的代码吗? - codeaholicguy

5
由于StringLong是完全不同的类型,所以你不能将它们强制转换,但你可以使用静态方法String.valueOf(Long value)和反向方法Long.valueOf(String value)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接