我有这种行为我不太理解
${someVar}
${someVar.class.name}
${someVar == 'error'}
outputs
false
java.lang.Boolean
true
- 怎么解释呢?
- 为了首先测试两个“事物”是否具有相同的类型,然后测试它们的值是否相同,编写测试的正确方法是什么?
这是定义在语言中的行为EL规格 http://jcp.org/en/jsr/detail?id=245:
A {==,!=,eq,ne} B
- 其他规则被忽略
- 如果 A 或 B 是布尔值 将 A 和 B 强制转换为布尔值,则应用运算符
将 A 强制转换为布尔值
- 如果 A 为 null 或“”,则返回 false
- 否则,如果 A 是布尔值,则返回 A
- 否则,如果 A 是一个 String,并且 Boolean.valueOf(A) 没有抛出异常,则返回它
- 否则会报错
因此,字符串文字通过强制转换为布尔值Boolean.valueOf("error")
which 返回假 http://download.oracle.com/javase/7/docs/api/java/lang/Boolean.html#valueOf%28java.lang.String%29.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)