例如,取消装箱整数会导致转换为Integer,然后调用intValue()。为什么不简单地转换为Number后跟必要的intValue()来获取原语?当然,问题扩展到拆箱所有其他包装器。
答案 0 :(得分:0)
首先,我注意到Integer是最终的。在类型(引用)Integer的表达式上调用intValue时,无需检查实例类型是否覆盖intValue。这对于类型(引用)Number的表达式是必要的。
答案 1 :(得分:0)
如果Java做了你提出的建议,这将打破装箱/拆箱不会造成精确损失的重要特征。 Java中已经存在一个既定原则,即必须使用强制转换运算符明确要求任何精度损失转换。写
是违法的final int i = 1L;
如果这样做会是错误的:
final int i = Long.valueOf(1);