给定以下Java代码片段,假设`obj`是一个对象引用,那么在以下哪个条件下,表达式 `(obj instanceof Boolean) && (obj != null) && (obj.booleanValue())` 能够**避免**抛出 `NullPointerException` 和 `ClassCastException`,并正确返回布尔值?

答案解析

选项 A 正确。首先 `(obj instanceof Boolean)` 确保 `obj` 是 `Boolean` 类型,避免了 `ClassCastException`。 其次,`obj != null` 确保 `obj` 不是空引用,避免了 `NullPointerException`。最后,`obj.booleanValue()` 返回`Boolean`对象对应的基本类型值,此情况下是 true。 选项 B 中,虽然满足了 `(obj instanceof Boolean)`, 但由于`obj`为`null`, `obj != null` 为 false,整个表达式结果为false,且不会触发`NullPointerException`,不符合题意。选项 C 和 A 类似,都可以满足所有条件,但是最终返回值是false,不符合题意中“正确返回布尔值”且是true。 选项 D 由于 `obj instanceof Boolean` 为 false, 因此该表达式也会返回 false, 并且没有真正执行到 `obj.booleanValue()` 阶段,所以避免了 `NullPointerException`。但是整个表达式为false,与题意不符。
正确答案:A
随机推荐
开始刷题