在Java中将对象转换为Long

时间:2016-06-30 07:09:08

标签: java object casting long-integer

我正在尝试在Java中将Object类型转换为Long类型,并得到:

public static Long castObjectToLong(Object object) {
    return ((Long)object).longValue();

当我运行时,它会抛出ClassCastException

7 个答案:

答案 0 :(得分:16)

当你写return ((Long)object).longValue();导致ClassCastException因为Object不是Long.That我的意思是如果Object o = new Long(),那么你可以使用cast((Long)对象。)这是我写的例子就像:

public class Test {

    public static void main(String args[]){
        System.out.println(convertToLong(10));
    }

    public static Long convertToLong(Object o){
        String stringToConvert = String.valueOf(o);
        Long convertedLong = Long.parseLong(stringToConvert);
        return convertedLong;

    }

}

我首先将Object转换为String。然后将String转换为Long.Please看到此代码可以使用或不使用。

答案 1 :(得分:3)

你可以这样试试:

 public class HelloWorld{
public static Long castObjectToLong(Object object) {
  return Long.parseLong(object.toString());
       }
    public static void main(String []args){
       System.out.println("Hello World");
       Object object=1234;
        System.out.println(castObjectToLong(object));
    }
}

答案 2 :(得分:3)

您得到了ClassCastException,因为您可能试图将java.lang.Integer转换为java.lang.Long,而这无法直接完成。

尝试将对象转换为String,然后将其作为参数传递给Long

的构造函数
public static Long castObjectToLong(Object object) {
   return new Long(object.toString());
}

答案 3 :(得分:1)

以下代码可能有所帮助:

public class CastObjectToLong {
    public Long castLongObject(Object object) {
        Long result = 0l;
        try {
            if (object instanceof Long)
                result = ((Long) object).longValue();
            else if (object instanceof Integer) {
                result = ((Integer) object).longValue();
            } else if (object instanceof String) {
                result = Long.valueOf((String) object);
            }
            System.out.println(result);
        } catch (Exception e) {
            System.out.println("============= cannot cast");
            // do something
        }
        return result;
    }

    public static void main(String... args) {
        CastObjectToLong castObjectToLong = new CastObjectToLong();
        Object object1 = 12; // Integer
        Object object2 = "12"; // String
        Object object3 = 12l; // String
        Object object4 = "abc"; // String

        castObjectToLong.castLongObject(object1);
        castObjectToLong.castLongObject(object2);
        castObjectToLong.castLongObject(object3);
        castObjectToLong.castLongObject(object4); // exception here
    }

}

输出:

12

12

12

=============无法投射

答案 4 :(得分:0)

我喜欢使用long l = new BigDecimal(String.valueOf(object).setScale(0).longValue()); 。简单且无错误。即使您的对象包含小数,它也会处理它。

enpy

答案 5 :(得分:0)

Long.parseLong((String.valueOf(object)))

答案 6 :(得分:0)

这是因为您返回的是 TileMap 值而不是您使用的 long 方法,该方法只会给出长值,但您不想要原始数据类型值,而是想要 Long.longValue()所以简单地投射它会起作用!! 即 Long 而不是 return (Long)object