在進行比較時 memberOf和contains Of 進行比較時操作兩邊的值類型要相同,如下:
36 memberOf ["24","36"] false
36 memberOf [24,36] true
"36" memberOf [24,36] false
"36" memberOf ["24","36"] true
強制轉換
當兩個不同類型且沒有可比性的值進行比較時,需要將右邊的值強制轉換成左邊的值的類型時,MVEL會應用類型強制轉換系統,反之亦然。
約束條件的比較過程中是會進行強制類型轉換的,比如在數據計算中傳入字符串“10”,則能成功轉換成數字10進行計算。但如果,此時傳入的值無法進行轉換,比如傳了“ten”,那么將會拋出異常。
當使用在String字符串的比較時,則按照字母順序進行排序。
相同類型 map.put("crate","26"); 規則配置:get("crate")<"3" 返回true 比較對應字符的大小(ASCII碼順序) compareTo 如果小於返回負數
相同類型 map.put("crate",26); 規則配置:get("crate")<3 返回false
不同類型 map.put("crate","26"); 規則配置:get("crate")<3 返回false 不同類型但是值具有可比性 按數字進行比較
不同類型 map.put("crate",26); 規則配置:get("crate")<"3" 返回false 不同類型但是值具有可比性 按數字進行比較
---------------------------------------------------------------------------------------------------------------------------
相同類型 map.put("crate","26"); 規則配置:get("crate")<"a" 返回true 比較對應字符的大小(ASCII碼順序)
不同類型 map.put("crate","a"); 規則配置:get("crate")<3 報錯 值類型不同又沒有可比性會發生強制轉換 java.lang.Integer cannot be cast to java.lang.String
如下代碼:Integer a = 3; String aStr = (String)a; 此時編譯器報強轉異常