Есть ли способ упростить это троичное утверждение? - PullRequest
0 голосов
/ 08 мая 2018

Итак, на данный момент у меня есть следующее:

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

По сути, я хочу в двух словах оценить, возвращает ли вызов базы данных значение NULL, если он все же заполняет JSON пустой строкой, в противном случае значением в базе данных.

Мне кажется, что я, возможно, что-то здесь упускаю и хотел бы не делать два вызова базы данных, поэтому я знаю, что могу создать переменную, которая будет выполнять вызов только один раз, и сохранить значение там, но мне было интересно, если был другой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Тим Бигелейзен ответ наиболее эффективен, но в одном выражении:

return Optional.ofNullable(
       response.getBlob(response.getColumnIndex(DatabaseHelper.rBarcode)))
   .map(Base64::encodeToString)
   .orElse(""));
0 голосов
/ 08 мая 2018

Просто сделайте один вызов БД и затем используйте результаты:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...