与整数参数一起使用时,Java Color创建会抛出IllegalArgumentException

时间:2009-07-29 07:27:48

标签: java spring exception colors

在我们公司的某些计算机上执行以下代码会导致IllegalArgumentException被抛出:

Color sludge = new Color(133, 133, 78);
//throws IAE with message "Color parameter outside of expected range: Red Green Blue"

使用 float 参数进行等效调用而不是

Color sludge = new Color(0.522, 0.522, 0.306); // 133/255 = 0.522, 78/255 = 0.306

为什么会出现这种情况?为什么它只影响某些机器?

这可能与Spring中定义的这些Color对象这样的事实有关:

<bean id="sludge" class="java.awt.Color">
    <constructor-arg value="133"/>
    <constructor-arg value="133"/>
    <constructor-arg value="78"/>
</bean>

2 个答案:

答案 0 :(得分:4)

更加迂腐:

<bean id="sludge" class="java.awt.Color">
    <constructor-arg index="0" type="int"><value>133</value></constructor-arg>
    <constructor-arg index="1" type="int"><value>133</value></constructor-arg>
    <constructor-arg index="2" type="int"><value>78</value></constructor-arg>
</bean>

修改

同时检查this blog post

答案 1 :(得分:3)

我不是春天的专家。但您是否尝试将类型设置为 int

<constructor-arg type="int" value="133">