drools类型转换


在进行比较时 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; 此时编译器报强转异常


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM