首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >instanceOf : Boolean java?

instanceOf : Boolean java?
EN

Stack Overflow用户
提问于 2010-08-30 21:18:57
回答 4查看 22.4K关注 0票数 17

我有点困惑:我有一个函数,它接受一个对象作为参数。但是,如果我只是传递一个基元,甚至将布尔型基元识别为布尔型对象,编译器也不会报错。为什么会这样呢?

代码语言:javascript
复制
public String test(Object value)
{
   if (! (value instanceof Boolean) ) return "invalid";
   if (((Boolean) value).booleanValue() == true ) return "yes";
   if (((Boolean) value).booleanValue() == false ) return "no";
   return "dunno";
}

String result = test(true);  // will result in "yes"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-30 21:20:28

因为原语'true‘将被到Boolean,并且它是一个Object

票数 32
EN

Stack Overflow用户

发布于 2010-08-30 21:24:03

就像之前的答案所说的,这叫做自动装箱。

实际上,在编译时,javac会将boolean原始值转换为Boolean对象。注意,通常情况下,由于以下代码的原因,反向转换可能会生成非常奇怪的NullPointerException

代码语言:javascript
复制
Boolean b = null;
if(b==true) <<< Exception here !

您可以查看JDK documentation以获取更多信息。

票数 3
EN

Stack Overflow用户

发布于 2010-08-30 21:23:11

方法的这一部分:

代码语言:javascript
复制
  if (((Boolean) value).booleanValue() == true ) return "yes";
  if (((Boolean) value).booleanValue() == false ) return "no";
  return "dunno";

可以替换为

代码语言:javascript
复制
  if (value == null) return "dunno";
  return value ? "yes" : "no";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3600686

复制
相关文章

相似问题

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