2015-07-22 2 views
2

Я использую классы моделей для сопоставления таблиц, а затем вывод данных с помощью схемы XML/JSON (объекты, сгенерированные с помощью xjc).Проверка нулевых значений в сопоставленной строке с использованием java8

Одна вещь, которую я не люблю делать, привязывая значения из таблицы в XML-документ, является нулевой проверкой. Предположим, что имеется 40 столбцов, из которых 35 могут быть нулевыми.

Что я делаю, очень просто, как показано ниже;

if (dataFromTable.getUserPhoneNumber != null) { 
    jaxbObject.setUserPhoneNumber(dataFromTable.getUserPhoneNumber); 
} 

Можно я могу сделать 1 метод, который может фильтровать все аннулирует и установить их jaxbObjects без написания кода, как и выше для всех и каждого столбца?

Как я вижу, Java 8 имеет filter(), который может фильтровать нули из коллекции. Но что, если я хочу применить это к единому объекту (1 строка из таблицы) и проверить каждое значение столбца для null?

+0

Обычно я использую структуру сущности для этого, тогда вы можете просто сделать класс сущностью и прочитать данные из базы данных. – user2130951

+0

@ Rajkishan. API «Stream» может работать только в «Коллекциях» или в массиве, преобразованном в поток. Тем не менее, взгляните на метод Stream.of. – CKing

+0

@CKing: Есть ли какой-либо другой способ, который я могу выполнить эту проверку нулевого кода, но не нужно писать столько «if» ...? – Raj

ответ

3

Если вы хотите обработать возможность значения будучи null без явного if заявления, вы можете использовать Optional:

Optional.ofNullable(dataFromTable.getUserPhoneNumber()) 
     .ifPresent(jaxbObject::setUserPhoneNumber); 

Это не такой большой выигрыш по сравнению с обычным if заявление. Optional s продемонстрирует свои преимущества при возврате методом вместо нулевой ссылки в первую очередь и/или при объединении с несколькими этапами обработки.

По-прежнему он имеет то преимущество, что звонил getUserPhoneNumber() только один раз, не требуя дополнительной локальной переменной.