首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >何时使用包装器类和基元类型

何时使用包装器类和基元类型
EN

Stack Overflow用户
提问于 2009-10-15 13:16:43
回答 4查看 83.7K关注 0票数 109

什么时候我应该使用包装器类而不是原始类型?或者在什么情况下我应该在包装器/原语类型之间进行选择?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-15 05:36:30

其他人提到,某些构造,如Collections,需要对象,并且对象比它们的原始副本(内存和装箱)有更多的开销。

另一个考虑因素是:

可以方便地将对象初始化为null或将null参数发送到方法/构造函数以指示状态或函数。这不能用原语来完成。

许多程序员将数字初始化为0(默认值)或-1来表示这一点,但根据场景的不同,这可能是不正确的或具有误导性的。

这也会在某些东西被错误使用时设置NullPointerException的场景,这比一些任意的bug更有利于程序员。

票数 74
EN

Stack Overflow用户

发布于 2011-09-08 15:04:40

在我看来,如果我的类成员是包装器变量,它不依赖于默认值,这是开发人员友好的行为。

1.

代码语言:javascript
复制
class Person {
   int SSN ; // gets initialized to zero by default 
}

2.

代码语言:javascript
复制
class PersonBetter {
  Integer SSN; //gets initialized to null by default
}

在第一种情况下,您不能保持SSN值未初始化。如果您在尝试使用该值之前没有检查是否设置了该值,则可能会造成伤害。

在第二种情况下,您可以将SSN初始化为null。这可能会导致NullPointerException,但总比在不初始化SSN字段的情况下尝试使用默认值(零)作为SSN插入到数据库中要好。

票数 17
EN

Stack Overflow用户

发布于 2009-10-15 06:25:09

集合是简单Java包装器对象的典型情况。但是,您可以考虑在代码(值对象)中为包装器赋予更具体的含义。

当归结到代码的可读性和可维护性时,使用值对象几乎总是有好处的。当对象具有某些职责时,将简单的数据结构包装在对象内部通常可以简化代码。这在Domain-Driven Design中非常重要。

当然还有性能问题,但我倾向于忽略它,直到我有可能用适当的数据来衡量性能,并对有问题的领域采取更多定向行动。如果代码也很容易理解,可能也更容易理解性能问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1570416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档