簡體   English   中英

java:boolean instanceOf Boolean?

[英]java: boolean instanceOf 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"

因為原始的' true '將被AutoboxedBoolean並且是一個Object

就像以前的答案所說的那樣,它被稱為自動裝箱。

實際上,在編譯時, javac會將你的boolean primitve值轉換為一個Boolean對象。 請注意,通常,反向轉換可能會生成非常奇怪的NullPointerException ,例如,由於以下代碼

Boolean b = null;
if(b==true) <<< Exception here !

您可以查看JDK文檔以獲取更多信息。

這部分方法:

  if (((Boolean) value).booleanValue() == true ) return "yes";
  if (((Boolean) value).booleanValue() == false ) return "no";
  return "dunno";

可以替換為

  if (value == null) return "dunno";
  return value ? "yes" : "no";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM