【问题标题】:Why are some methods using the Boolean class and not the primitive type?为什么有些方法使用布尔类而不是原始类型?
【发布时间】:2014-06-30 03:44:12
【问题描述】:

我在查看 Android 框架文档时,有一件事引起了我的注意。 TimePickersetIs24HourView 方法使用 包装类 Boolean,而不是原始类型 boolean

我只是想知道,在那里使用包装类是否有特定的原因?它有什么好处吗,还是只是开发人员不小心按了 Shift 太久了?并且可以/应该将其报告为错误(实际上是一个非常小的错误,因为自动装箱,但仍然是一个错误)?

【问题讨论】:

  • 我很想知道它是如何处理通过null 的。有时方法是用包装类型而不是原始类型编写的,以防传递 null 是可能的/应该特殊处理。
  • 另一方面,我很惊讶getCurrentHour 返回一个Integer 而不是int

标签: java methods parameters boolean boxing


【解决方案1】:

一般来说,当您的 API 允许“未知”状态时,您希望使用 Boolean 而不是 boolean,为此您可以允许传递 null

然而,在这种情况下,没有“未知”状态,因为the corresponding getter is declared with the primitive boolean:

public boolean is24HourView ()

我肯定会将此报告为错误。

【讨论】:

  • 太棒了!我实际上试过了,nullNullPointerException 一起崩溃,这并不奇怪。报告错误。
猜你喜欢
  • 2011-05-30
  • 2012-10-13
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 2021-10-25
相关资源
最近更新 更多