簡體   English   中英

Groovy:無法將 object 'null' 和 class 'null' 轉換為 class 'double'。 嘗試使用“java.lang.Double”

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

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