我有一个字符串地图。我想从该映射中提取一个值,并将其作为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"))
答案 0 :(得分:1)
使用三元运算符和static method call
#{jobParameters['something']==null?(double)0:T(java.lang.Double).valueOf(jobParameters['something'])}
要小心,因为如果jobParameters ['something']没有表示有效的双倍,你将获得NumberFormatException
。
您可以考虑使用像NumberUtils.toDouble()
这样的函数,它不会抛出异常,但会设置默认值。