Java:获取对象的值并将其解析为long

时间:2014-04-17 08:27:10

标签: java object long-integer

我有一个对象,它的第一个字段是一个数字(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])));

但是有一个错误

3 个答案:

答案 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 longvalueOf返回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”)将抛出异常。这取决于你喜欢什么行为。