关于自动装箱和自动转换的问题
Integer i=3;//这个没有问题,自动装箱
long l = 4;//这个自动转换,int-->long,也没啥问题
int i2=4;
Long l2=i2;//这个不能实现。****
求解一下,有点乱
i2不是int吗?不会自动转成long,然后再自动装成Long吗???还是我想法太天真了。
int-->long-->Long。这个实现不了吗?
比如我有一个方法
public void go(long l),这个方法调用的时候go(3)..正常编译执行
还有一个
public void go(Long l),这个方法调用go(3)。编译不通过
求解释下。3Q
------解决方案--------------------
不可能像你说的那样。
long l = 4;
这个过程是自动转型,也就是说基本类型到基本类型。
Integer i=3;
这个是自动装箱,自动装箱的机制是这样的。发现基本类型赋值给引用类型。
启动自动装箱功能,把3自动装箱成Integer.然后赋值
Long l2=i2;
这个,他会启动自动装箱机制。给自己装箱成Integer.但是Long并非Integer父类。所以出错。