Необязательный, вероятно, здесь вам не поможет.
Первое, о чем следует подумать, - это контрольные значения. Здесь вы четко указываете, что считаете, что семантически значение reg[0]
null эквивалентно тому, что reg[0]
является пустой строкой (или даже строкой, содержащей только пробелы). Это должно быть необычно. null
не означает «ничего» или «пустой». null должен быть заменой для «Нет значения». Лучший способ сделать это - найти место, которое генерирует reg[0]
, и убедиться, что здесь задано правильное значение semanti c (пустая строка). Тогда этот код может быть просто: if (!reg[0].isEmpty()) orderData.setCity(reg[0]);
- намного чище.
Это, конечно, не всегда возможно. Например, если reg
идет по конвейеру из библиотеки или другого кода, который просто не находится под вашим контролем, или это объект, созданный, скажем, демаршаллером JSON.
In В этом случае я бы обычно советовал создать явный шаг для преобразования объекта, который «не является чистым» (имеет нули, даже когда семантически предполагается, что это пустая строка) в чистую.
Если это невозможно или невозможно, ну, работать с «нечистым» предметом никогда не будет особенно красиво, с точки зрения стиля. Здесь очень поможет вспомогательный метод:
normalizeThenSetIfNonBlank(reg[0], orderData::setCity);
normalizeThenSetIfNonBlank(reg[1], orderData::setCountry);
private void normalizeThenSetIfNonBlank(String in, Consumer<String> target) {
if (in == null) return;
in = in.trim();
if (in.isEmpty()) return;
target.accept(in);
}