1

情况就是这样,我在 Map 中有一个对象,我明确知道它包含 Long 的实例,我需要将该值转换为字符串,但不断收到不兼容的类型错误。这是我的代码的样子:

Map<String, Object> map = ...;
Object obj = new Long(31415L);
String str = Long.valueOf((long)map.get("id")); //Problem line

这给出了:

Inconvertible types.
Found   : java.lang.Object
Required: long

关于如何解决这个问题的任何建议?

4

4 回答 4

5

使用,例如:

String.valueOf(map.get("id"))

问题是您尝试将对象强制转换为原始类型。那是行不通的。

但是由于您的地图的值Long无论如何都是 s (集合不能包含原始类型,除了专门的实现,例如在 GNU Trove 中找到的),请查看@BheshGurung 的答案...

于 2013-06-14T18:25:01.507 回答
5

你可以做

String str = map.get("id").toString();
于 2013-06-14T18:25:07.397 回答
0
 You can use the toString function;  

 public String toString() {
    return String.valueOf(map.get("id"))
 }



    String str = map.get("id").toString();
于 2013-06-14T18:33:10.273 回答
0

您在这里有两个问题:

  1. 您创建了 * L *ong,而不是 * l *ong。因此,您需要转换回 * L *ong,而不是 * l *ong。

  2. 为了获得 * L *ong 的字符串表示,您必须对其调用 toString()。

用这个: String str = ((Long)map.get("id")).toString();

于 2013-06-14T18:38:11.633 回答