簡體   English   中英

如何避免Java方法鏈中的null

[英]How to avoid null in Java method chain

這是我的代碼片段。

     String fileName = "";
     FileDTO file = 
     FileService.findById(fileId);
    if(file != null && file.getFileFormate() != null){
        fileName = file.getFileName();
        fileName = "." +file.getFileFormate().getExtension();
    }

在這里我可以看到空指針異常的機會。 如果文件不為空,然后file.getFileFormate() 不為空,那么我可以調用file.getFileFormate().getExtension()。 所以我必須為他們每個人檢查 null 。 是否有任何飛行的方法來檢查它。 就像是:-

file?.getFileFormate()?.getExtension()

JVM 是否也從左到右執行代碼從右到左?

所以我的代碼冷作為檢查:

if(file != null && file.getFileFormate() != null)

or

if(file.getFileFormate() != null  && file != null)

or

if(null != file.getFileFormate()  &&  null != file)

由於大概FileDTO是您編寫的類,您可以簡化對空值的檢查,如下所示:

if(file != null){
    fileName = file.getFileName();
    fileName = "." +file.getExtension();
}

然后將類似以下內容添加到FileDTO

public String getExtension() {
    String extension = "";
    if (this.getFileFormate() != null) {
        extension = this.getFileFormate().getExtension();
    }
    return extension;
}

這具有不暴露FileDTO內部實現細節的FileDTO

至於你的另一個問題,正如評論已經說過的,它是從左到右的,但有些運營商有一個 order of precedence

暫無
暫無

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

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