У меня есть несколько констант, как показано ниже: public String name; публичная строковая фамилия; public String age; общедоступный почтовый индекс String; И если одно из этих значений == null, я должен вернуть информацию об этом, я ...

0
markWanka 31 Мар 2021 в 15:08

2 ответа

Лучший ответ

Необязательный параметр не имеет отношения к этой проблеме.

List<String> missing = new ArrayList<String>();
if (name == null) missing.add("name");
if (surname == null) missing.add("surname");
if (age == null) missing.add("age");
if (postcode == null) missing.add("postcode");

if (missing.isEmpty()) return null;
if (missing.size() == 1) return "You need to provide " + missing.get(0));
return "You need to provide: " +
  String.join(", ", missing.subList(0, missing.size() - 1)) +
  " and " +
  missing.get(missing.length() - 1);

Вы немного усложнили ситуацию, желая существенно разного форматирования в зависимости от того, есть ли одно или несколько отсутствующих полей, и добавив аспект «и».

NB: спрашивать «имя» и «фамилию» - глупая вещь. Более половины населения планеты носит имя, которое не вписывается в этот шаблон. Просто попросите «имя», одну строку, это все, что вам нужно. Кроме того, "возраст", очевидно, не является строкой.

2
rzwitserloot 31 Мар 2021 в 12:14

Вы можете использовать java.util.Objects#requireNonNull(T).

Вот это java-документ:

Проверяет, что указанная ссылка на объект не пуста. Этот метод предназначен в первую очередь для проверки параметров в методах и конструкторах, как показано ниже:

public Foo(Bar bar) {
    this.bar = Objects.requireNonNull(bar);
}

Если объект имеет значение null, будет выброшено исключение NullPointerException. И вы можете справиться с этим как хотите. Например. с одним из сообщений из предоставленного вами кода.

-1
I.R. 31 Мар 2021 в 12:17