我有一个对象,它的第一个字段是一个数字(BigDecimal,int ...)。我想解析它很长但是在解析时它会说方法" ValueOf"不适用于Object。
我试过这个。
if (list != null && !list.isEmpty()) {
for (Object[] obj : list) {
Object obj1 = obj[0];
Dto dto= new Dto();
dto.setId(Long.valueOf((obj[0])));
但是有一个错误
答案 0 :(得分:1)
调用toString并将其解析为Long值:
dto.setId(Long.parseLong(obj[0].toString()));
答案 1 :(得分:1)
Long.parseLong(obj[0].toString());
Long.parseLong()
期望String中没有任何格式符号。
如果您不关心格式,请考虑使用Long.toString()
将长值转换为字符串,并使用Long.parseLong()
将其转换回来。
还有这种方法:Long.valueOf(str)
;区别在于parseLong
返回primitive long
而valueOf
返回new Long() object
。
答案 2 :(得分:1)
更有效的方法是将其转换为数字。
public static long asLong(Object o) {
return o instanceof Number
? ((Number) o).longValue()
: Long.parseLong(o.toString());
}
注意:这会以不同方式处理错误情况。例如,如果你有new BigDecimal("2.5")
使用longValue()将返回2
但Long.parseLong(“2.5”)将抛出异常。这取决于你喜欢什么行为。