在这种情况下,我在Map中有一个Object,我明确知道它包含一个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
有关如何解决这个问题的任何建议吗?
答案 0 :(得分:5)
使用,例如:
String.valueOf(map.get("id"))
问题是您尝试将对象强制转换为基本类型。那不行。
但是因为地图的值无论如何都是Long
(集合不能包含原始类型,除了GNU Trove中的专用实现),请看@ BheshGurung的答案......
答案 1 :(得分:5)
你可以做到
String str = map.get("id").toString();
答案 2 :(得分:0)
You can use the toString function;
public String toString() {
return String.valueOf(map.get("id"))
}
String str = map.get("id").toString();
答案 3 :(得分:0)
这里有2个问题:
您创建了一个* L * ong,而不是* l * ong。因此,您需要转回* L * ong,而不是* l * ong。
为了获得* L * ong的字符串表示,你必须在其上调用toString()。
使用此:
String str = ((Long)map.get("id")).toString();