Любой простой способ проверить значение null перед преобразованием объекта в строку

Я всегда пишу

Object o;
if (o!=null)
String s = o.toString();

Если есть простой способ справиться с этим случаем?

Ответ 1

ObjectUtils.toString(object) от commons-lang. В коде есть фактически одна строка:

return obj == null ? "" : obj.toString();

Только одно примечание - используйте toString() только для отладки и ведения журнала. Не полагайтесь на формат toString().

Ответ 2

Статический метод valueOf в классе String выполнит нулевую проверку и вернет "null", если объект null:

String stringRepresentation = String.valueOf(o);

Ответ 3

Попробуйте Objects.toString(Object o, String nullDefault)

Пример:

import java.util.Objects;

Object o1 = null;
Object o2 = "aString";
String s;

s = Objects.toString(o1, "isNull"); // returns "isNull"
s = Objects.toString(o2, "isNull"); // returns "aString"

Ответ 4

Обновленный ответ Божо и января-59 для справки:

ObjectUtils.toString(object) от commons-lang. В коде есть фактически одна строка:

return obj == null ? "" : obj.toString();

Однако этот метод в Apache Commons теперь устарел после выпуска 3.2 (commons/lang3). Их целью было удалить все методы, доступные в Jdk7. Этот метод был заменен на java.util.Objects.toString(Object) в Java 7 и, вероятно, будет удален в будущих версиях. После некоторого обсуждения они еще не удалили его (в настоящее время в 3.4), и он по-прежнему доступен как устаревший метод.

Обратите внимание, что указанный метод java 7+ возвращает "null" для нулевых ссылок, в то время как этот метод возвращает и пустую строку. Чтобы сохранить использование поведения

java.util.Objects.toString(myObject, "")

Ответ 5

String.valueOf(o) возвращает строку "null", если o имеет значение null.

Другим может быть String s = o == null? "default" : o.toString()

Ответ 6

Вы можете использовать java 8 Необязательно следующим образом:

String s = Optional.ofNullable(o).map(Object::toString).orElse("null");

Ответ 7

Похоже, вы хотите получить строку, когда o не является NULL. Но я сбиваю с толку, что если вы кодируете, как у вас, вы не можете получить доступ к переменной s (вы знаете, s в справке if).

Ответ 8

В зависимости от того, что вы хотите, это значение null, но вы можете просто сделать это

Object o =
String s = ""+o;

Это поведение по умолчанию для println и добавления строк и т.д.