当前位置: 首页 > 知识库问答 >
问题:

Spring expression(SpEL)-Elvis运算符:无法从整数转换为布尔错误

唐沈义
2023-03-14

例如,以下将引发错误:field?:2>0

>

  • 如果field=1,则得到java.lang.ClassCastException:java.lang.Integer不能强制转换为java.lang.Boolean

    如果字段为空:则Elvis工作正常,并使用值2。

    谢谢,

    塞巴斯蒂安

  • 共有1个答案

    贺宏富
    2023-03-14

    Elvis运算符是三元运算符的简记法,用于可为空性检查的情况。

    它的语法是:

    someField?:somevalue
    

    其中,某个字段可以是任何类型的。上面的表达式将返回someField(如Integer)的值,如果不是null,则返回someValue。someValue必须与SomeField(Integer)具有相同的类型。

    在您的示例中,field是一个整数,因此解析的值也必须是整数类型。但是,您正在执行的2>0解析为布尔类型,在本例中这是无效的。

    您可以做的是(字段?:2)>0,如果这是您正在尝试实现的。

    我希望它能澄清。

     类似资料:
    • 问题内容: 如何将整数转换为布尔值? 问题答案: 尝试使用此返回 或仅使用布尔值开始(使用更好的名称): 它继续使我迷惑人们为什么使用-可怕的变量名。看起来并不传达任何意义。

    • 概述 布尔运算符用于将表达式转为布尔值,一共包含四个运算符。 取反运算符:! 且运算符:&& 或运算符:|| 三元运算符:?: 取反运算符(!) 取反运算符是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。 !true // false !false // true 对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都

    • PHP是否有任何内置函数可以接受布尔值并返回其整数等效值?0代表FALSE,1代表TRUE?当然,您可以轻松创建一个函数来做到这一点,我只是询问PHP内部是否有内置函数。我已经尝试了并将其转换为但它们不起作用,它们在TRUE和FALSE两种情况下都返回0。 编辑:问题是它不是真正的布尔值,而是一个字符串“false”、“true”,php没有检测到传递布尔值的jquery帖子。问题解决了,谢谢!

    • 问题内容: Postgres给我这个错误: 查询失败:错误:无法将数字类型转换为布尔值 问题答案: 使用: 和之间没有定义直接转换。您可以用作中间立场。将是中间立场的另一个候选者,因为每种类型都可以从/强制转换。价值当然是必须的。 更好的是,用一个命令完成所有操作,以获得更好的性能和更短的锁定时间: 手册中有关的详细信息。

    • 我需要将一个整数(代表x.509 KeyUsage掩码)转换为布尔数组,在Java中,我有以下可用函数,可以正常工作: 在这种情况下(144),它应该返回 密钥用法={boolean[9]@976}[0]=真[1]=假[2]=假[3]=真[4]=假[5]=假[6]=假[7]=假[8]=假 在Groovy中运行这个时,我得到 org.codehaus.groovy.control.MultipleC