我看过有人说我们应该尽可能地使用原语而不是对象。 原因是访问对象意味着使用指针,因此存在开销。
因此:
@Column("MY_COLUMN")
public Integer getId() {
// super.getIdAsInt() returns a value of type int, the primitive.
// -1 means value not set in my app.
Integer result = (super.getIdAsInt() == -1) ? null : super.getIdAsInt();
return result;
}
我认为这种模式也可以应用于子类关于持久化数据(进入数据库或XML文件,......)的任何情况,并且具有空值的字段是有意义的。
谢谢,
答案 0 :(得分:1)
使用包装类的好处远远超过任何开销含义。对象可以在集合中使用,也可以为null。 NullPointerException比未初始化的原语导致的错误更容易调试。
此外,您提出的解决方案会给您和其他开发人员不希望在未来处理的应用程序增加不必要的复杂性。
答案 1 :(得分:0)
您从数据库获取数据,这比指针追逐惩罚要长几个数量级。无论你获得什么,都可以忽略不计,并被getId
使用条件和分配包装器的成本所抵消。你的非平凡的吸气剂可能会阻止内联,然后你会失去更多。
在多次使用大量原语的数字运算代码中,避免包装可能是必不可少的。对于大多数程序来说,这是非常无关紧要的。