1

我有一个字符串映射。我想从该映射中提取一个值并将其作为 Double 属性传递给另一个对象。密钥可能解析为 null。做这个的最好方式是什么?

例如,当值解析为 null 时,这将失败:

<bean id="someBean" class="mystuff.Example">
    <property name="someDoubleProp">
        <bean class="java.lang.Double">
            <constructor-arg value="#{jobParameters['something']}" />
        </bean>
    </property>
</bean>

我希望寻找一些与此 java 相同的漂亮 SpEL 表达式:

myMap.get("something") == null ? null : new Double(myMap.get("something"))
4

1 回答 1

1

使用三元运算符和静态方法调用

#{jobParameters['something']==null?(double)0:T(java.lang.Double).valueOf(jobParameters['something'])}

要小心,因为如果 jobParameters['something'] 没有 rappresenting 一个有效的 double 你会得到一个NumberFormatException.
您可以认为使用这样的函数NumberUtils.toDouble()不会引发异常,而是设置默认值。

于 2013-08-28T05:33:58.723 回答