为什么拆箱会转换为具体类而不是Number

时间:2012-04-26 04:08:46

标签: java

例如,取消装箱整数会导致转换为Integer,然后调用intValue()。为什么不简单地转换为Number后跟必要的intValue()来获取原语?当然,问题扩展到拆箱所有其他包装器。

2 个答案:

答案 0 :(得分:0)

首先,我注意到Integer是最终的。在类型(引用)Integer的表达式上调用intValue时,无需检查实例类型是否覆盖intValue。这对于类型(引用)Number的表达式是必要的。

答案 1 :(得分:0)

如果Java做了你提出的建议,这将打破装箱/拆箱不会造成精确损失的重要特征。 Java中已经存在一个既定原则,即必须使用强制转换运算符明确要求任何精度损失转换。写

是违法的
final int i = 1L;

如果这样做会是错误的:

final int i = Long.valueOf(1);