前段时间我们用 int 字段构建了我们的 DTO 类,在使用它们进行了数周的开发后,我被要求将这些字段的类型从 int 更改为 Integer。我认为不可能简单地更改声明中的类型,但是经过几次修改后没有任何编译错误。就这么简单吗?
问问题
177 次
3 回答
4
是的,这是因为自动装箱。请参阅http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html。
但是,请注意如果 Integer 对象为空,则将 Integer 对象隐式更改为 int 可能会导致空指针异常。
于 2012-11-28T15:50:42.113 回答
1
Java 5 提供了自动装箱/拆箱,这就是为什么您没有看到任何编译问题的原因。
int(原始数据类型)到Integer的转换称为Autoboxing,反之称为Unboxing。
于 2012-11-28T15:52:36.140 回答
0
我宁愿不这样做。在某些情况下,盒子类型不如原始类型(例如,因为它们是对象,您可以将它们放在集合中),但是用它们的盒子类型替换所有原始类型很少有回报。正如其他人已经提到的,您必须检查空值。另请注意,监督新对象的创建也很容易。
于 2012-11-28T15:55:32.127 回答