2015-09-28 4 views
4

У меня есть этот код в Java:Есть ли способ, чтобы автоматически инициализировать переменную, если нуль

String foo = request.getParameter("bar"); 
if (foo == null) { 
    foo = ""; 
} 

Есть несколько значений проверены таким образом. На других языках я, вероятно, будет в состоянии сделать что-то вроде этого:

String foo = request.getParameter("bar") || ""; 

Я был на самом деле просто интересно, если есть эквивалент в Java.

ответ

6
String foo = request.getParameter("bar") !=null ? request.getParameter("bar") :""; 

или если вы чувствуете, как getParameter() вызывающих дважды, вы можете написать

String foo = request.getParameter("bar"); 
foo = foo!=null? foo : ""; 

Это называется ternary operator or conditional operator (:?).

+0

бить меня к нему .. –

+0

Но здесь вы называете 'метода getParameter' дважды в случае, если он не был нулевым при вызове в первый раз. –

+0

ах, да, я мог бы использовать тернарный оператор, это хороший момент, не думал об этом. Благодарю. – qrikko

1

Я бы предложил использовать MoreObjects.firstNonNull из Google Guava, чтобы не звонить request.getParameter ("bar") дважды.

String foo = MoreObjects.firstNonNull(request.getParameter("bar"), ""); 
+0

Мне нравится идея и синтаксис, но мне нужно будет импортировать некоторую библиотеку, чтобы использовать ее? или хорошо .. Я пойду проверить это, а не спрашивать здесь: P – qrikko

2

Apache Commons Lang имеет способ ObjectUtils::defaultIfNull. Вы можете легко реализовать на подходе свой собственный, используя sᴜʀᴇsʜ ᴀᴛᴛᴀ в:

public static <T> T defaultIfNull(T object, T defaultValue) { 
    return object == null ? defaultValue : object; 
} 
4

Если вы используете Java 8, вы можете, вероятно, пойти с чем-то вроде этого:

Optional.ofNullable(request.getParameter("bar")).orElse("") 

Если вы не используете Java 8 , вы можете использовать Optional from Google Guava. Что предлагает аналогичный API. Напр.

Optional.fromNullable(request.getParameter("bar")).or("") 

Оба они позволяют указать функцию для создания альтернативного значения.

Если вы просто хотите пойти старую школу, создать метод, как:

static String emptyIfNull(String value) { 
    if (value == null) return ""; 
    else return value; 
} 

emptyIfNull(request.getParameter("bar")) 
+0

Если вы используете Guava, вы также можете использовать 'Objects.firstNonNull (request, getParameter (" bar ")," ")'. –

+0

@ LouisWasserman Я думал об обновлении ответа, но этот подход уже находится в другом [ответ здесь] (http://stackoverflow.com/a/32817980/1258479) –

Смежные вопросы