从长到十进制类型对象的强制类型错误

时间:2013-03-19 20:40:46

标签: java casting type-conversion

我有以下代码和成员值是类型对象,并在此过程中=长,我想将其强制转换为大十进制,当我尝试以下代码时,我得到错误:java.lang.Double无法强制转换为[ ç

} else if  (typeName.equals("java.math.BigDecimal"))) {
        return new SwitchInputType<BigDecimal>(new BigDecimal((char[]) memberValue));

4 个答案:

答案 0 :(得分:2)

错误消息:

java.lang.Double cannot be cast to [C

告诉你这个演员是非法的:

(char[]) memberValue

所以不要这样做。该错误消息告诉您memberValueDouble,因此这应该有效:

return new SwitchInputType<BigDecimal>(new BigDecimal((Double) memberValue));

根据声明的memberValue类型,强制转换可能完全没有必要,但声音就像声明的类型是Object一样。或者,由于有一个接受字符串的BigDecimal构造函数,你可以尝试使用它,尽管它不是那么臭:

return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue.toString()));

答案 1 :(得分:2)

[C表示类型“char数组”,实际上,您无法将Double强制转换为char数组,也不应该至。根据消息,memberValueDouble,所以您只想做

return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue));

答案 2 :(得分:0)

如果您收到该错误,则表示memberValue为Double。在这种情况下,您应该只使用

new BigDecimal(memberValue)

但我必须看到更多代码才能确定。

答案 3 :(得分:0)

错误消息表示memberValuejava.lang.Double对象,并且您正尝试将其强制转换为char[]。这不起作用,因为Double不是char[]

在这种情况下,您只需移除广告,然后在doubleValue()对象上调用Double

return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue.doubleValue()));

这样,您使用BigDecimal的构造函数,该构造函数采用double而不是char[]

如果memberValue的类型为Object,则必须先将其转换为Double

((Double)memberValue).doubleValue()