[英]Long type cast error when reading Integer field from MongoDB in Java
[英]cast type error from long to decimal type object
我有以下代碼,並且成員值是object類型,在此過程中= long,我想將其轉換為大十進制數,當我嘗試以下代碼時遇到錯誤: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));
盡管聽起來像聲明的類型是Object
,但取決於memberValue
聲明的類型, memberValue
可能是完全不必要的。 另外,由於有一個BigDecimal
構造函數可以接受字符串,因此您可以嘗試擺脫它,盡管它的確不是那么卑鄙:
return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue.toString()));
[C
表示類型為char
數組,實際上,您不能將Double
轉換為char
的數組,也不必這樣做。 根據消息, memberValue
是Double
,因此您只想做
return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue));
如果收到該錯誤,則表示memberValue是Double。 在這種情況下,您應該只使用
new BigDecimal(memberValue)
但我必須查看更多代碼才能確定。
該錯誤消息表示memberValue
是一個java.lang.Double
對象,並且您正在嘗試將其memberValue
為char[]
。 那是行不通的,因為Double
不是char[]
。
在這種情況下,您只需刪除演員表,然后在Double
對象上調用doubleValue()
:
return new SwitchInputType<BigDecimal>(new BigDecimal(memberValue.doubleValue()));
這樣,您使用的是BigDecimal
的構造函數,該構造函數使用double
而不是char[]
。
如果memberValue
的類型為Object
,則必須首先將其memberValue
為Double
:
((Double)memberValue).doubleValue()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.