繁体   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