2014-02-07 63 views
2

意味着由於下面的代碼:是什麼邏輯運算符「不是」 EL

<% 
java.util.Map map = new java.util.HashMap(); 
request.setAttribute("map", map); 
map.put("a", "true"); 
map.put("b", "false"); 
map.put("c", "42"); 
%> 

${not map.c} 

${not map.c}輸出是真的....什麼樣的操作是這樣的表情?爲什麼它的結果是真的?

回答

3

規範說:

一元不操作 - 一個

  • 強制轉換一個布爾,應用運營商

{,不!}

脅迫A爲布爾值

  • 如果A爲空或 「」,返回false
  • 否則,如果A是一個布爾值,返回一個
  • 否則,如果A是一個字符串,並通過Boolean.valueOf(A)不不會拋出異常,返回它
  • 否則,錯誤

map.c是字符串"42"Boolean.valueOf("42")false,並且not運營商適用於false返回true