簡體   English   中英

有沒有一種方法可以簡化此三元語句?

[英]Is there a way to simplify this ternary statement?

因此,我目前所擁有的是:

responseJson.put("barcode", 
    response.getBlob(response.getColumnIndex(DatabaseHelper.rBarcode)) == null 
        ? "" 
        : Base64.encodeToString(response.getBlob(response.getColumnIndex(DatabaseHelper.rBarcode)), 
            Base64.DEFAULT));

基本上,我想做的是評估數據庫調用是否返回null,如果確實這樣做,則使用空字符串填充JSON,否則使用數據庫中的值填充。

我覺得我可能在這里丟失了一些東西,不想對數據庫進行兩次調用,所以我知道我可以創建一個變量來僅執行一次調用並將值存儲在其中,但是我想知道是否存在一個不同的方式來做到這一點?

只需進行一次數據庫調用,然后重用結果:

byte[] barcode = response.getBlob(response.getColumnIndex(DatabaseHelper.rBarcode));
responseJson.put("barcode", barcode == null ? "" : 
    Base64.encodeToString(barcode, Base64.DEFAULT));

但是,如果將其編寫為if語句,則可能更易於閱讀和維護:

byte[] barcode = response.getBlob(response.getColumnIndex(DatabaseHelper.rBarcode));
String value = "";
if (barcode != null) {
    value = Base64.encodeToString(barcode, Base64.DEFAULT);
}
responseJson.put("barcode", value);

Tim Biegeleisen的回答是最有效的,但表達如下:

return Optional.ofNullable(
       response.getBlob(response.getColumnIndex(DatabaseHelper.rBarcode)))
   .map(Base64::encodeToString)
   .orElse(""));

暫無
暫無

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

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