Object obj = 123456;
long userId = (long)obj;
System.out.println(userId);
楼主这段代码编译不通过
Object obj = 123456;
Long userId = (Long)obj;
System.out.println(userId);这种写法编译通过如果是下面这种方式也是编译不通过的Integer obj = 123456;
Long userId = (Long)obj;
System.out.println(userId);
Integer对象是不能转成Long对象的,但是值是可以的。即Integer类型的值可以转成long类型的值。

解决方案 »

  1.   

    说得对,Integer可以自动解包为int,然后转换为long,但Object就不能转换为基础类型了
      

  2.   

    你可以这样做: Object obj = 123456;
    Long userId = Long.parseLong(obj+"");
    System.out.println(userId);
      

  3.   

    说得对,Integer可以自动解包为int,然后转换为long,但Object就不能转换为基础类型了
    +1
      

  4.   

    说得对,Integer可以自动解包为int,然后转换为long,但Object就不能转换为基础类型了
    +1
    这个本质是java多态的问题,object是java一切类的父类。这里的向下转型即:强制将object转成Integer肯定会报错。