java:boolean instanceOf Boolean?

epe*_*gzz 15 java primitive autoboxing casting boolean

我有点困惑:我有一个函数,它以Object作为参数.但是如果我只传递一个原语甚至将布尔基元识别为布尔对象,编译器就不会抱怨.为什么会这样?

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"
Run Code Online (Sandbox Code Playgroud)

Jig*_*shi 32

因为原始" true"将被AutoboxedBoolean和这是一个Object.

  • (+ 1)这里有一些[与之相关的文档](http://download.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html) (3认同)