我有以下代码和成员值是类型对象,并在此过程=长,我想将其转换为大十进制,当我尝试下面的代码时,我得到的错误:java .lang.Double不能转换为[C强制类型错误从长到十进制类型对象
} else if (typeName.equals("java.math.BigDecimal"))) {
return new SwitchInputType<BigDecimal>(new BigDecimal((char[]) memberValue));
我有以下代码和成员值是类型对象,并在此过程=长,我想将其转换为大十进制,当我尝试下面的代码时,我得到的错误:java .lang.Double不能转换为[C强制类型错误从长到十进制类型对象
} else if (typeName.equals("java.math.BigDecimal"))) {
return new SwitchInputType<BigDecimal>(new BigDecimal((char[]) memberValue));
错误消息:
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()));
如果您收到该错误,则表示memberValue是Double。在这种情况下,您应该只使用
new BigDecimal(memberValue)
但我必须看到更多的代码才能确定。
错误消息意味着memberValue
是一个java.lang.Double
对象,你正试图将其转换为char[]
。这是行不通的,因为Double
不是char[]
。
在这种情况下,你可以删除投,和Double
对象调用doubleValue()
:
return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue.doubleValue()));
这样,你正在使用的BigDecimal
,需要一个double
而不是char[]
构造。
如果memberValue
类型为Object
,你必须将它转换为Double
第一:
((Double)memberValue).doubleValue()
的[C
代表型“char
阵”,而事实上,你不能施放Double
到char
的数组,也不应该。据消息,memberValue
是Double
,所以你只想做
return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue));
谢谢,但是当我尝试你的建议,我得到以下DT错误构造函数BigDecimal(Object)是未定义的,任何想法? – 2013-03-19 21:03:09
什么是'memberValue'的类型? – sircapsalot 2013-03-19 20:43:23