我有以下代码和成员值是类型对象,并在此过程中=长,我想将其强制转换为大十进制,当我尝试以下代码时,我得到错误:java.lang.Double无法强制转换为[ ç
} else if (typeName.equals("java.math.BigDecimal"))) {
return new SwitchInputType<BigDecimal>(new BigDecimal((char[]) memberValue));
答案 0 :(得分:2)
错误消息:
java.lang.Double cannot be cast to [C
告诉你这个演员是非法的:
(char[]) memberValue
所以不要这样做。该错误消息告诉您memberValue
是Double
,因此这应该有效:
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
数组,也不应该至。根据消息,memberValue
是Double
,所以您只想做
return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue));
答案 2 :(得分:0)
如果您收到该错误,则表示memberValue为Double。在这种情况下,您应该只使用
new BigDecimal(memberValue)
但我必须看到更多代码才能确定。
答案 3 :(得分:0)
错误消息表示memberValue
是java.lang.Double
对象,并且您正尝试将其强制转换为char[]
。这不起作用,因为Double
不是char[]
。
在这种情况下,您只需移除广告,然后在doubleValue()
对象上调用Double
:
return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue.doubleValue()));
这样,您使用BigDecimal
的构造函数,该构造函数采用double
而不是char[]
。
如果memberValue
的类型为Object
,则必须先将其转换为Double
:
((Double)memberValue).doubleValue()