日期:2014-05-20  浏览次数:20741 次

一个基础问题,想不通,请教一下大家
代码A:        Integer obj = 123456;
               long userId = (long)obj;
               System.out.println(userId);

运行结果:正常打印出123456;

代码B:        Object obj = 123456;
               long userId = (long)obj;
               System.out.println(userId);
运行结果:抛出异常java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

这是为什么呢?
------解决方案--------------------

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类型的值。