簡體   English   中英

將類型錯誤從長類型轉換為十進制類型對象

[英]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

所以不要這樣做。 錯誤消息告訴您memberValueDouble ,因此應該可以使用:

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

盡管聽起來像聲明的類型是Object ,但取決於memberValue聲明的類型, memberValue可能是完全不必要的。 另外,由於有一個BigDecimal構造函數可以接受字符串,因此您可以嘗試擺脫它,盡管它的確不是那么卑鄙:

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

[C表示類型為char數組,實際上,您不能將Double轉換為char的數組,也不必這樣做。 根據消息, memberValueDouble ,因此您只想做

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

如果收到該錯誤,則表示memberValue是Double。 在這種情況下,您應該只使用

new BigDecimal(memberValue)

但我必須查看更多代碼才能確定。

該錯誤消息表示memberValue是一個java.lang.Double對象,並且您正在嘗試將其memberValuechar[] 那是行不通的,因為Double不是char[]

在這種情況下,您只需刪除演員表,然后在Double對象上調用doubleValue()

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

這樣,您使用的是BigDecimal的構造函數,該構造函數使用double而不是char[]

如果memberValue的類型為Object ,則必須首先將其memberValueDouble

((Double)memberValue).doubleValue()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM