为什么我应该将Boolean作为参数而不是"boolean"传递?

Jai*_*cia 23 java java-ee

一位同事让我将签名从使用原始"布尔"更改为使用分类"布尔".他没有提供很好的解释原因?

你们有没有人听说过这个问题,你们中有谁可以解释为什么重要或无关紧要?

编辑:他提到这是公共方法的好习惯.

字段的使用只是一个标志,告诉我是否要调用一个流程或另一个流程,具体取决于它是真还是假.

Bla*_*ppo 26

它与数据库有关吗?如果数据库中有布尔值,则它可以包含三个值之一 - true,false和null.Boolean对象可以让你模仿这种行为.

基本上,这是一个问题,你是否想要处理"null"作为潜在的输入值.

  • @Jim:实际上,当你需要表示一个3值变量时,我认为布尔正是你想要使用的.它违反了最不令人意外的原则 - 人们期望布尔有2个州. (6认同)

Jim*_*ley 22

实际上我倾向于错误地传递small-b boolean,因为我知道原始布尔值永远不会为null.我确信使用布尔类型有正当理由,但我想在每种情况下考虑它的使用.

  • 使用 `Boolean` 时,你不需要处理装箱和拆箱吗? (2认同)

Pop*_*ops 8

实际上,一般来说,除非有特殊原因,否则使用常规基元是一种好习惯.虽然你需要移动很多物体才能真正重要,但它会稍微快一点/少浪费.

为了回应你的编辑,我从未听说它是公共方法的好习惯.在Josh Bloch经常引用的Effective Java中,有一个完整的项目"Prefer primitive types to boxed primitives"(第49项,如果你能得到一份副本).听起来你的具体案例没有理由支持使用big-b布尔值,并且使用对象会产生陷阱,例如与旧代码的交互不良,例如,使用==而不是equals()(对于原语来说甚至不可能).