字符串valueOf方法报ClassCastException问题
1、场景
最近在使用String的valueOf方法时报错java.lang.ClassCastException
,模拟代码如下:
private static Map<String, Object> map = new HashMap<>();
static{
map.put("billId", 123456789L);
}
public static <T> T getParamValue(String param){
return (T) map.get(param);
}
public static void main(String[] args) {
System.out.println(String.valueOf(getParamValue("billId")));
}
断点调式:
执行时报错:
Exception in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to [C
2、处理方法
经分析,应该是方法使用了泛型导致调用valueOf方法时找的是valueOf(char data[])
而不是valueOf(long l)
。处理方式如下:
//如果确定值的类型,则可以直接用Long
Object billId = getParamValue("billId");
System.out.println(String.valueOf(billId));