[英]MongoDB: class java.lang.Double cannot be cast to class java.lang.Long
[英]Groovy: Cannot cast object 'null' with class 'null' to class 'double'. Try 'java.lang.Double' instead
我有一個系統的代碼,它只接受 groovy 進行定制,但每次我嘗試提交我的表單時,它都會返回此錯誤:
不能將 object 'null' 和 class 'null' 轉換為 class 'double'。 嘗試使用“java.lang.Double”
try {
double valorOriginal = (double) fieldChanges.getFieldChange(MetafieldIdFactory.valueOf("customFlexFields.rateCustomDFF_rate_amount_original"))?.newValue;
double porcentagem = (double) fieldChanges.getFieldChange(MetafieldIdFactory.valueOf("customFlexFields.rateCustomDFF_desconto_percentual"))?.newValue;
double rateAmount = fieldChanges.getFieldChange(MetafieldIdFactory.valueOf("rateAmount"))?.newValue;
boolean flagDesconto = (boolean) fieldChanges.getFieldChange(MetafieldIdFactory.valueOf("customFlexFields.rateCustomDFF_flag_desconto_percentual"))?.newValue;
if (porcentagem >= 100)
throw BizFailure.createProgrammingFailure("Desconto nao pode ser igual ou superior a 100!");
if (valorOriginal == null || valorOriginal <= 0)
throw BizFailure.createProgrammingFailure("Favor informar o valor original");
if(flagDesconto == true){
rateAmount = valorOriginal - (valorOriginal * porcentagem)/100;
}
}catch(Exception ex){
throw BizFailure.createProgrammingFailure(ex.getMessage().toString());
}
如評論中所述(以及錯誤消息本身所述),錯誤是您的可能為空的屬性被分配給基本類型double
,它不能是 null。
如果您使用盒裝類型Double
,那將解決問題,因為Double
可以是 null。
Double n = null; // no problem
double n = null; // Cannot cast object 'null' with class ...
順便說一句,在其他情況下可能會出現此錯誤,例如忘記返回值,它從聲明返回原始類型的 function 隱式返回 null:
static double gonnaFail() {
// Cannot cast object 'null' with class ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.