有没有办法简化这个三元语句?

时间:2018-05-08 05:59:55

标签: java android sqlite

所以我现在所拥有的是以下内容:

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

基本上我想简单地做的是评估数据库调用是否返回null,如果确实如此,则使用空字符串填充JSON,否则使用数据库中的值填充。

我觉得我可能在这里遗漏了一些东西,并且不想对数据库进行两次调用,所以我知道我可以创建一个变量来只进行一次调用并将值存储在那里,但是想知道是否有不同的方法吗?

2 个答案:

答案 0 :(得分:1)

只需进行一次数据库调用,然后重复使用结果:

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);

答案 1 :(得分:0)

Tim Biegeleisen的答案是最有效的,但作为一个表达式:

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