Я читав дані з файлу CSV і хотів бипризначити значення стовпців змінним. Можливо, файл не містить потрібного поля. Тоді я хотів би призначити значення за замовчуванням. Я хотів би щось подібне до цього:
String country = nextLine[columnIndices.get("country")] || "Austria";
Який найелегантніший спосіб без великої кількості прихильників. (Я новачок у Java від C #)
Відповіді:
9 для відповіді № 1Використовуйте метод:
private String valueOrDefault(String value, String defaultValue) {
return value == null ? defaultValue : value;
}
...
String country = valueOrDefault(nextLine[columnIndices.get("country")], "Austria");
5 для відповіді № 2
Ви можете зробити це так:
String country = (nextLine[columnIndices.get("country")] != null) ? nextLine[columnIndices.get("country")] : "default";
3 для відповіді № 3
Оскільки Java 8 ви також можете використовувати
String s = Optional.ofNullable(fooStr).orElse("bar");
// may be null ----------------^^^^^^
1 для відповіді № 4
Припускаючи, що перший варіант не може кинути a NullPointerException
, Я рекомендую Apache Commons " firstNonNull
Це дозволяє пройти будь-яка кількість аргументів і воно поверне перше ненулеве значення.
String country = ObjectUtils.firstNonNull(nextLine[columnIndices.get("country")], "Austria");
// Add more arguments if needed
1 для відповіді № 5
Просте, якщо твердження може його вирішити:
String country = nextLine[columnIndices.get("country")];
if (country == null)
country = "Austria";
0 для відповіді № 6
Якщо припустити, що ви можете використовувати Java 8, ви можете використовувати необов’язково.
Long value = findOptionalLong(ssn).orElse(0L);
Це встановлює значення на число або 0, якщо воно не знайдено.
0 для відповіді № 7
Простіший і легкий для читання:
String country = nextLine[columnIndices.get("country")];
country = (country != null) ? country : "Austria";
0 для відповіді № 8
Або створити загальний метод
static <T> T nvl(T first, T ifFirstNull) {
return (first != null ? first : ifFirstNull);
}
І ви можете використовувати його для будь-яких об'єктів